我希望这是个简单的问题。我执行以下操作:
在vs2010中,我创建了一个windows窗体应用程序
从工具箱中,将richtextbox控件拖动到窗体
调整窗体和RichTextBox控件的大小,使其足以显示小图片。
运行(开始调试)。
从web浏览器复制一个小图像并粘贴到richtextbox(使用ctrl-v)。
在richtextbox中选择图像。将显示一个带有小框的调整大小框架。
现在,当我将光标放在一个小的调整大小框上时,光标会闪烁。我看到调整大小箭头光标的一瞥,但大多数情况下,它显示的是工字梁光标。当a图片粘贴到写字板上,光标放在其中一个小的调整大小框上时,它不会稳定地显示箭头光标。在richtextbox中调整图片大小的行为是否与在wordpad中相同?如何停止光标闪烁?

最佳答案

有了这个技巧,你就可以在不闪烁的情况下调整图像的大小,并且使用正确的Arrows Cursors
怎么用?
首先,您需要对RichTextBox进行子类化并重写方法WndProc,因此当RichTextBox接收到更改其Cursor的消息时,我们将检查图像是否为select--嗯,我不知道是否为Image,但它是Object而不是Text
如果选择了Image,我们将message重定向到DefWndProc---这是默认的窗口过程。
代码:

public class RichTextBoxEx : RichTextBox
{
    private const int WM_SETCURSOR = 0x20;

    protected override void WndProc(ref Message m)
    {
        if (m.Msg == WM_SETCURSOR)
        {
            if (SelectionType == RichTextBoxSelectionTypes.Object)
            {
                DefWndProc(ref m);
                return;
            }
        }

        base.WndProc(ref m);
    }
}

关于c# - 尝试在RichTextBox中调整图像大小时光标闪烁,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32304388/

10-13 08:00