急!TextBox鼠标邮件弹出自定义的菜单?(winForm)

时间:2020-12-14 00:57:21
我现在一个TextBox里面有很多文字,我鼠标先左键选择一部分,然后鼠标右键。不想让他弹出什么”复制 剪切“的提示框 弹出个自定义的提示来 

比如:设为标题,设为主题等类似的提示。

我改怎么做 谢谢

7 个解决方案

#1


定义一个菜单,并设置TextBox.ContextMenu为这个菜单!

#2


ContextMenu

#3


我很笨 能在稍微说详细一点吗?

#4


物理懿 TextBox:
public class TextBoxEx:System.Windows.Forms.TextBox
{
private const int WM_COPY=0x0301;
private const int WM_CONTEXTMENU =0x007B;
public TextBoxEx()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected override void WndProc(ref Message m)
{
base.WndProc (ref m);
if(m.Msg==WM_CONTEXTMENU||m.Msg==WM_COPY)return;//WM_CONTEXTMENU是为了不让出现鼠标右键菜单,WM_COPY不允许CTRL+C复制内容
if(m.Msg==WM_PASTE)return;
}

#5


如果你想让出现CONTEXTMENU而让复制变灰不起作用那就屏蔽消息WM_COPY好了,如果你想写一个象QQ一样无法盗取密码的文本框,那你就再屏蔽WM_GETTEX,WM_RBUTTONDOWN,WM_PASTE,然后重写OnKeyDown和OnKeyPress,
由于要处理UNDO,REDO,所以写起来有点烦,得加一个字段oldValue,又要根据文本框的属性Multiline在OnKeyPress分别处理,同时处理BackSpace,Delete键,我以前化了好长时间才完成,只在自己的安装程序中(防盗密码)用了一次,如果没必要就不用那么麻烦了

#6


1、添加一个contextMenu控件,名为contextMenu1;
2、contextMenu1中添加自己要显示的菜单;
3、把TextBox的contextMenu 属性设为:contextMenu1;

OK

#7


这样已经屏蔽了系统默认的右键菜单(复制、粘贴...等)
PS:已验证了;

#1


定义一个菜单,并设置TextBox.ContextMenu为这个菜单!

#2


ContextMenu

#3


我很笨 能在稍微说详细一点吗?

#4


物理懿 TextBox:
public class TextBoxEx:System.Windows.Forms.TextBox
{
private const int WM_COPY=0x0301;
private const int WM_CONTEXTMENU =0x007B;
public TextBoxEx()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
protected override void WndProc(ref Message m)
{
base.WndProc (ref m);
if(m.Msg==WM_CONTEXTMENU||m.Msg==WM_COPY)return;//WM_CONTEXTMENU是为了不让出现鼠标右键菜单,WM_COPY不允许CTRL+C复制内容
if(m.Msg==WM_PASTE)return;
}

#5


如果你想让出现CONTEXTMENU而让复制变灰不起作用那就屏蔽消息WM_COPY好了,如果你想写一个象QQ一样无法盗取密码的文本框,那你就再屏蔽WM_GETTEX,WM_RBUTTONDOWN,WM_PASTE,然后重写OnKeyDown和OnKeyPress,
由于要处理UNDO,REDO,所以写起来有点烦,得加一个字段oldValue,又要根据文本框的属性Multiline在OnKeyPress分别处理,同时处理BackSpace,Delete键,我以前化了好长时间才完成,只在自己的安装程序中(防盗密码)用了一次,如果没必要就不用那么麻烦了

#6


1、添加一个contextMenu控件,名为contextMenu1;
2、contextMenu1中添加自己要显示的菜单;
3、把TextBox的contextMenu 属性设为:contextMenu1;

OK

#7


这样已经屏蔽了系统默认的右键菜单(复制、粘贴...等)
PS:已验证了;