Richtextbox mousemove event文本的颜色是
有没有办法使用mousemove
事件来确定文本在RichTextBox
中的颜色?我想避免使用Richtextbox.Select
,因为它在鼠标移动的任何位置添加了一个小选择栏。Richtextbox mousemove event文本的颜色是
private void rtbComputerstatus_MouseMove(object sender, MouseEventArgs e)
{
int c = rtbComputerstatus.GetCharIndexFromPosition(new Point(e.X, e.Y));
rtbComputerstatus.Select(c, 1);
if (rtbComputerstatus.SelectionColor == Color.Blue)
rtbComputerstatus.Cursor = Cursors.Hand;
else
rtbComputerstatus.Cursor = Cursors.Default;
}
只是在黑暗中一枪,但会下面的工作?
private void rtbComputerstatus_MouseMove(object sender, MouseEventArgs e)
{
if (rtbComputerstatus.ForeColor.ToKnownColor() == KnownColor.Blue)
rtbComputerstatus.Cursor = Cursors.Hand;
else
rtbComputerstatus.Cursor = Cursors.Default;
}
我认为这将检查刚刚选定的文本:
private void rtbComputerstatus_MouseMove(object sender, MouseEventArgs e)
{
if (rtbComputerstatus.SelectionColor.ToKnownColor() == KnownColor.Blue)
rtbComputerstatus.Cursor = Cursors.Hand;
else
rtbComputerstatus.Cursor = Cursors.Default;
}
你可以尝试这样的事情,从这个MSDN Forum answer of JoOls修改,它会给你的鼠标下的像素的颜色。
private void rtbComputerstatus_MouseMove(object sender, MouseEventArgs e)
{
Point cursorPoint = Cursor.Position;
Bitmap bm = new Bitmap(1, 1);
Graphics g = Graphics.FromImage(bm);
g.CopyFromScreen(cursorPoint, new Point(), new Size(1, 1));
Color pixelColor = bm.GetPixel(0, 0);
g.Dispose();
bm.Dispose();
if (pixelColor.ToArgb().Equals(Color.Blue.ToArgb()))
{
if (rtbComputerstatus.Cursor != Cursors.Hand)
rtbComputerstatus.Cursor = Cursors.Hand;
}
else
{
if(rtbComputerstatus.Cursor != Cursors.Default)
rtbComputerstatus.Cursor = Cursors.Default;
}
}
+1这工作时,我在本地测试。当你发布它时,我试图找出这样的解决方案。 – Adrian 2013-05-10 02:36:49
感谢Mark,当我的鼠标移动到Richtextbox中的蓝色像素上时工作,但当鼠标移动到字母之间的空白区域时,它会返回到正常光标。它似乎是像素太精确,会增加位图(1,1)增加其“大小”? – Boundinashes6 2013-05-10 02:54:59
是的,但即使你是你还只是测试1像素,在这种情况下,左上角。你需要检查所有的人,看看大多数是蓝色的。我正在尝试解决方案,可以降低MouseMove Logic – 2013-05-10 03:01:05
如果你改变'rtbComputerstatus.Select(C,1);''来rtbComputerstatus.Select(C,0);'那么你至少没有得到大的蓝色选择框,即使你在你的鼠标周围的盒子上贴上脱字符。 – Adrian 2013-05-10 02:20:58
这可能会起作用,只有在富文本框内部时,才有办法隐藏插入符号? – Boundinashes6 2013-05-10 03:29:38
可能。我知道它可以使用Windows API完成。老实说,你最好马克霍尔的解决方案。 – Adrian 2013-05-10 03:35:42