che*_*ate 5 .net c# richtextbox winforms
在 RichTextBox(C#、.NET 4.0、WinForms)中将鼠标移到选定文本上时,我遇到了奇怪的行为:当我移动鼠标光标时,它在 Cursors.Arrow 和 Cursors.IBeam 之间闪烁。
我找到了禁用闪烁的代码:
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_SETCURSOR) //WM_SETCURSOR is set to 0x20
return;
}
Run Code Online (Sandbox Code Playgroud)
但随后鼠标光标被卡在 Cursors.Arrow 中,即使我手动将其设置为其他内容,例如:
void RTFBox_MouseMove(object sender, MouseEventArgs e)
{
Cursor = Cursors.IBeam;
}
Run Code Online (Sandbox Code Playgroud)
(我还在 MouseMove 函数中设置了逻辑来设置Cursor其他类型的非Arrow光标,这取决于鼠标悬停在什么上面。)
我也试过:
public override Cursor Cursor
{
get
{
//(I have other logic here to determine the desired cursor type I want; in all cases it was a non-Arrow cursor)
return Cursors.Cross; //'Cross' instead of 'IBeam' just to prove whether this works
}
set
{
return;
}
}
Run Code Online (Sandbox Code Playgroud)
这成功地使光标成为一个十字(但仅当我注释掉WndProc代码时),但是当我将鼠标悬停在所选文本上时闪烁仍然存在(鼠标光标在箭头和十字之间变化)。
在试图找到解决方案时,我遇到了这篇文章,但是
SendMessage(Handle, LVM_SETHOTCURSOR, IntPtr.Zero, Cursors.IBeam.Handle);
从继承自 RichTextBox 的类调用并没有解决闪烁问题。
我的问题似乎与这篇文章中描述的问题相同,但该问题被描述为存在于 .NET 3.0 并在 .NET 3.5 中修复。
当我创建一个新项目并在表单中插入一个 RichTextBox 时,闪烁仍然存在。
因此,我的问题是:如何防止这种闪烁?或者有人知道这个问题是否在 .NET/visual studio 的更高版本中得到解决?
[更新:我下载了 Visual Studio 2013,但“闪烁”效果仍然存在。我下载了 .Net 4.5.1 安装程序并告诉它修复,但“闪烁”仍然存在。在“属性”>“参考”下,它说“System.Windows.Forms”是版本 4.0.0.0;我想这意味着更新 4.0 是不必要的?]
| 归档时间: |
|
| 查看次数: |
4224 次 |
| 最近记录: |