写在前头:使用silverlight版本4.0以上,vs2010开发。
这里已将其封装成为一个类,该类只需传入TextBox,即可为其生成右键菜单,并具有相应的功能,具体代码,一会儿贴上,使用方法,附于代码下方,另外还有相关图标,但不知道怎么传附件,呵呵,所以图片可能传不了了,有想要的可以给我说下。
先上个效果图:
下面是整个源代码:
/// <summary>
/// 该类负责向TextBox添加右键菜单,菜单包括复制、粘贴、剪切、选择全部四项
/// </summary>
public static class CreatMenuForTextBox
{
// 菜单
static ContextMenu menu;
//TextBox
static TextBox textBox;
/// <summary>
/// 为textBox添加右键菜单
/// </summary>
/// <param name="textBox">所要添加的TextBox</param>
public static void creatMenu(TextBox textBox)
{
menu = new ContextMenu();
menu.Items.Add(getItem("剪切","../Images/CutHS.png"));
menu.Items.Add(getItem("复制","../Images/copyHS.png"));
menu.Items.Add(getItem("粘贴","../Images/PasteHS.png"));
menu.Items.Add(new Separator());
menu.Items.Add(getItem("选择全部",null));
ContextMenuService.SetContextMenu(textBox,menu);
textBox = textBox;
}
/// <summary>
/// 得到一个菜单项
/// </summary>
/// <param name="header">菜单项的名字</param>
/// <param name="imagePath">菜单项的图标</param>
/// <returns></returns>
private 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;
}
/// <summary>
/// 点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
static void item_Click(object sender,RoutedEventArgs e)
{
MenuItem menuItem = (MenuItem)sender;
try
{
execute(menuItem.Header.ToString());
}
catch (Exception)
{
}
textBox.Focus();
menu.IsOpen = false;
}
/// <summary>
/// 具体执行操作,之所以将其提出来,是为了捕捉异常
/// </summary>
/// <param name="selected">菜单项的名称</param>
static void execute(string selected)
{
switch (selected)
{
case "剪切":
Clipboard.SetText(textBox.SelectedText);
textBox.SelectedText = "";
break;
case "复制":
Clipboard.SetText(textBox.SelectedText);
break;
case "粘贴":
textBox.SelectedText = Clipboard.GetText();
break;
case "选择全部":
textBox.SelectAll();
break;
default:
break;
}
}
}
使用方法很简单,就一句话,如下:
CreatMenuForTextBox.creatMenu(textBox);
好了,到此也就差不多说清楚了,大家如果觉得有用的话,或有什么需要的话,联系我,谢谢支持!
天猫正品:西诺A10正品通用大容量锂聚合物手机移动电源充电宝 10000毫安 【包邮】 高端精品 安全聚合物 充5次苹果!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。