大佬教程收集整理的这篇文章主要介绍了silverlight中添加给TextBox批量添加右键菜单,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
基于此人写的代码,修改优化后支持批量给所有TextBox添加右键菜单,而菜单共用一个,节省资源。
public static class CreatMenuForTextBox { // 菜单 static ContextMenu menu; //TextBox static TextBox textBox; /// <sumMary> /// 为任意元素的内部TextBox添加右键菜单 /// </sumMary> public static void creatMenu(DependencyObject obj) { menu = new ContextMenu(); menu.Items.Add(getItem("剪切","../Images/1.jpg")); menu.Items.Add(getItem("复制",null)); menu.Items.Add(getItem("粘贴",null)); menu.Items.Add(new Separator()); menu.Items.Add(getItem("选择全部",null)); menu.opened += menu_Opened; SetMenu(obj); } static void SetMenu(DependencyObject obj) { var count = VisualTreeHelper.GetChildrenCount(obj); for (int i = 0; i < count; i++) { var child = VisualTreeHelper.GetChild(obj,i); if (child is TextBox) { ((TextBox)child).MouseRightButtonDown += TextBox_MouseRightButtonDown; } else { SetMenu(child); } } } static void TextBox_MouseRightButtonDown(object sender,MouseButtonEventArgs E) { e.Handled = true; textBox = sender as TextBox; textBox.Focus(); menu.IsOpen = true; } static void menu_Opened(object sender,RoutedEventArgs E) { textBox.Focus(); } static MenuItem getItem(String header,String imagePath) { MenuItem item = new MenuItem(); item.Header = header; if (imagePath != null) { Image im = new Image(); im.source = new ImagesourceConverter().ConvertFromString(imagePath) as Imagesource; item.Icon = im; } item.Click += new RoutedEventHandler(item_Click); return item; } static void item_Click(object sender,RoutedEventArgs E) { MenuItem menuItem = (MenuItem)sender; try { execute(menuItem.Header.ToString()); } catch (Exception) { } textBox.Focus(); } static void execute(String SELEcted) { switch (SELEcted) { case "剪切": Clipboard.SetText(textBox.SELEctedText); textBox.SELEctedText = ""; textBox.GetBindingExpression(TextBox.TextProperty).updatesource(); break; case "复制": Clipboard.SetText(textBox.SELEctedText); break; case "粘贴": textBox.SELEctedText = Clipboard.GetText(); textBox.GetBindingExpression(TextBox.TextProperty).updatesource(); break; case "选择全部": textBox.SELEctAll(); break; default: break; } } }2013-11-20修改:添加了剪切和粘贴动作对绑定数据源的更新。
以上是大佬教程为你收集整理的silverlight中添加给TextBox批量添加右键菜单全部内容,希望文章能够帮你解决silverlight中添加给TextBox批量添加右键菜单所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。