请教TextBox的头痛的问题 WinForm中,怎么在TextBox里面禁止掉自身的 “撤销”、“重做”功能? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 继承从TextBox,重写WndProc,参见如下:public class textbox : TextBox{ protected override void WndProc(ref Message m) { if (m.Msg != 0x304) { base.WndProc(ref m); } }} 搂主是想屏蔽TextBox自带的Ctrl+Z是吧,用下面的试下bool handled = false;private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e){ if(e.Control && e.KeyCode == Keys.Z) handled = true;} private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e){ e.Handled = handled; handled=false;} 谢谢: hbxtlhx(平民百姓) 和 lxcnn(过客)to: hbxtlhx(平民百姓) 这个方法我是使用了,如果我只按一次 Ctrl+z,是不能撤销。但是我连续按3次Ctrl+ z,就可以撤销了。所以这个方法不能解决我的问题。to:lxcnn(过客) 没有看明白你是什么意思,全局变量handled 是作什么用的? 把条件加一下就可以了:if (m.Msg != 0xC7 && m.Msg != 0x454 && m.Msg!=0x304){ base.WndProc(ref m);} 全局变量handled 用来记录按键状态,在textBox1_KeyDown事件里判断按下的是否是Ctrl+Z,如果是,handled = true;,此时进入textBox1_KeyPress事件,e.Handled = handled;即为e.Handled = true;即不处理这一事件,从而达到屏蔽Ctrl+Z的目的设断点跟踪一下就知道了 谢谢 hbxtlhx(平民百姓)to: hbxtlhx(平民百姓)我使用的是 RichTextBox,然后这样写,仍旧是按3次ctrl+z就可以撤销。protected override void WndProc(ref Message m) { if (m.Msg != 0xC7 && m.Msg != 0x454 && m.Msg != 0x304) { base.WndProc(ref m); } } to lxcnn(过客) 我也按照你的方法试过了,按一次ctrl+z是不可以撤销。但是连续按3次ctrl+z就撤销上一次的操作。 ClearUndo 方法 方法清除一下吧:用TextBoxBase.ClearUndo 方法 从该文本框的撤消缓冲区中清除关于最近操作的信息。备注根据应用程序的状态,可以使用此方法防止重复执行撤消操作。 TextBox用上面的方法,RichTextBox有自己的方法,在richTextBox1_TextChanged事件里用richTextBox1.ClearUndo();即可 结贴 只给private void myRichTextBox1_TextChanged(object sender, EventArgs e){}里面加一句代码: myRichTextBox1.ClearUndo();就可以禁止掉RichTextBox自身的撤销功能。谢谢 lxcnn(过客) 和 hbxtlhx(平民百姓)散分 lxcnn(过客) 30 hbxtlhx(平民百姓)20 lxcnn(过客) 30 hbxtlhx(平民百姓)20---------------这样哪行啊,要结贴选管理才行啊:) 另外楼主可以把RichTextBox的ShortcutsEnabled属性设置为False,以消除快捷键的的使用,比如:this.richTextBox.ShortcutsEnabled=false;这样就可以禁用下面的组合快捷键:Ctrl+Z Ctrl+E Ctrl+C Ctrl+Y Ctrl+X Ctrl+Backspace Ctrl+V Ctrl+Delete Ctrl+A Shift+Delete Ctrl+L Shift+Insert Ctrl+R 【求教】请问如何自动切割图片? 用webclient从FPT服务器下载文件问题 DataGridView数据格式转换问题!! 在WINFORM程序里面报了一个未知错误,特来求助 VS2005里面 global:: 是什么意思,怎么用的? 我 在2000上作的一个c# winform的程序,能在98下运行吗 C#中TextBox控件只允许输入数字的代码 图标文件.ICO 如何转化成.BMP ? DataGrid问题求教(在线等待) 请教几个问题(来者有分) menu 绑定 web.sitemap 实现动态导航条 ,现在要实现多语言?散分请教 关于ASP.net2.0中的参数问题 急!!!
public class textbox : TextBox
{
protected override void WndProc(ref Message m)
{
if (m.Msg != 0x304)
{
base.WndProc(ref m);
}
}
}
private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.Control && e.KeyCode == Keys.Z)
handled = true;
}
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
e.Handled = handled;
handled=false;
}
z,是不能撤销。但是我连续按3次Ctrl+ z,就可以撤销了。所以这个方法不能解决我的问题。to:lxcnn(过客)
没有看明白你是什么意思,全局变量handled 是作什么用的?
if (m.Msg != 0xC7 && m.Msg != 0x454 && m.Msg!=0x304)
{
base.WndProc(ref m);
}
我使用的是 RichTextBox,然后这样写,仍旧是按3次ctrl+z就可以撤销。
protected override void WndProc(ref Message m)
{
if (m.Msg != 0xC7 && m.Msg != 0x454 && m.Msg != 0x304)
{
base.WndProc(ref m);
}
}
我也按照你的方法试过了,按一次ctrl+z是不可以撤销。但是连续按3次ctrl+z就撤销上一次的操作。
用TextBoxBase.ClearUndo 方法
从该文本框的撤消缓冲区中清除关于最近操作的信息。备注
根据应用程序的状态,可以使用此方法防止重复执行撤消操作。
只给private void myRichTextBox1_TextChanged(object sender, EventArgs e)
{
}
里面加一句代码: myRichTextBox1.ClearUndo();就可以禁止掉RichTextBox自身的撤销功能。谢谢 lxcnn(过客) 和 hbxtlhx(平民百姓)
散分
lxcnn(过客) 30
hbxtlhx(平民百姓)20
hbxtlhx(平民百姓)20
---------------
这样哪行啊,要结贴选管理才行啊:)
Ctrl+Z Ctrl+E Ctrl+C Ctrl+Y Ctrl+X Ctrl+Backspace Ctrl+V Ctrl+Delete Ctrl+A Shift+Delete Ctrl+L Shift+Insert Ctrl+R