有没有办法使用RichTextBox
事件确定mousemove
中文字的颜色?我想避免使用Richtextbox.Select
,因为它会在鼠标移动的任何地方添加一个小选区。
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;
}
答案 0 :(得分:1)
您可以尝试使用此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 :(得分:0)
只是在黑暗中拍摄,但下面会有效吗?
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;
}