有没有办法使用mousemove
事件来确定RichTextBox
中的文本是什么颜色?我想避免使用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;
}
发布于 2013-05-10 10:30:08
你可以尝试这样的东西,从这个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;
}
}
发布于 2013-05-10 10:14:02
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;
}
https://stackoverflow.com/questions/16474028
复制相似问题