文本框中双击的默认行为是文本的一部分。我想用选择一个词来覆盖它。但我发现处理doubleclick事件(或重写OnDoubleClick方法)实际上首先执行默认行为,然后执行我的代码。是否可以禁用默认行为。是否可以通过双击来禁用文本框选择部分文本
2
A
回答
1
它看起来并不像你可以做到这一点与标准的WinForms事件处理程序(DoubleClick
和MouseDoubleClick
不给你任何的方式来抑制默认行为),但你可以通过创建自定义WndProc
和处理做到这一点窗口消息自己。
在下面的示例中,我将覆盖我创建的PreviewTextBox
类中的默认Control.WndProc
。我通过这个类公开了PreviewDoubleClick
事件,如果在客户端代码中处理,可以通过设置e.Handled = true;
来抑制默认的双击行为。在本例中,该事件在OnPreviewDoubleClick
事件处理程序中处理,您可以在其中添加自定义代码,以便对所做的双击操作做出反应。
如果您需要有关双击的其他鼠标信息,我相信您可以通过WndProc
中的Message.LParam
/Message.WParam
字段获得该信息。
(下面的代码假设你有一些代码背后的形式已经设置)
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
class DoubleClickEventArgs : EventArgs
{
public bool Handled
{
get;
set;
}
}
class PreviewTextBox : TextBox
{
public event EventHandler<DoubleClickEventArgs> PreviewDoubleClick;
protected override void WndProc(ref Message m)
{
if ((m.Msg == WM_DBLCLICK) || (m.Msg == WM_LBUTTONDBLCLK))
{
var e = new DoubleClickEventArgs();
if (PreviewDoubleClick != null)
PreviewDoubleClick(this, e);
if (e.Handled)
return;
}
base.WndProc(ref m);
}
const int WM_DBLCLICK = 0xA3;
const int WM_LBUTTONDBLCLK = 0x203;
}
public partial class TestForm : Form
{
public TestForm()
{
InitializeComponent();
_textBox = new PreviewTextBox();
_textBox.Text = "Test text foo bar";
_textBox.PreviewDoubleClick += new EventHandler<DoubleClickEventArgs>(OnPreviewDoubleClick);
Controls.Add(_textBox);
}
void OnPreviewDoubleClick(object sender, DoubleClickEventArgs e)
{
e.Handled = true;
}
PreviewTextBox _textBox;
}
}
相关问题
- 1. 双击时禁用文本选择
- 2. JavaScript:通过双击禁用文本选择
- 3. 禁用文本框选择或单击
- 4. 通过双击Tablewidget中的项目来为QLinEdit选择文本
- 5. 是否可以在acrobat中用javaScript选择文本框
- 6. 通过点击开始禁用文本选择
- 7. HTML可用性问题 - (双击)点击选择文本
- 8. 我可以通过单击emacs中的linum列来选择文本吗?
- 9. CKEditor:可以通过双击编辑器中的文本来调用操作?
- 10. 是否有可能通过ipad上的iscroll选择文本?
- 11. Android - 文本可选 - 选择文本的一部分
- 12. JQuery通过内部文本选择
- 13. 通过加载MVC复选框,选中禁用文本框
- 14. 禁用铬文本选择弹出框
- 15. 如何禁用文本框的选择
- 16. 如何防止双击选择文本?
- 17. 双击CFEclipse中的文本选择
- 18. 双击时文本选择div(contenteditable)
- 19. 选择标签文本是文本框
- 20. 通过将选择框隐藏在文本框下面来设计选择框
- 21. 通过复选框启用和禁用文本框数组
- 22. 双击禁用选择框,使
- 23. 文本选择禁用
- 24. 禁用文本选择UITextView
- 25. WPF文本框和双击
- 26. 希望通过鼠标c选择datagridview文本框列文本的部分文本#
- 27. 是否可以在可以点击某个文本框的文本框中单击一个词?
- 28. 是否可以禁用视觉可达性的双指双击?
- 29. 是否可以通过脚本检查Vagrant框是否过期?
- 30. 是否可以通过CSS单独使文本框看起来像textarea一样?
太棒了!有用。非常感谢你! – leon 2010-05-18 10:28:58