如何在选择文本时滚动面板?

时间:2013-06-18 10:24:10

标签: c# winforms

我有一个面板,让我们说这个面板的高度是500px。在该面板内部是一个多线文本框,它比面板大 - 让我们说高度为1000px。

设置面板以便显示滚动条,并使用鼠标滚轮和拖动滚动条滚动。但是,当在文本框中选择文本(突出显示),然后将选择拖动到显示的文本之外时,它不会滚动,但我想要它。就像在浏览器中选择超出可见内容的文本时一样。

值得注意的是我的面板是自定义的,虽然不多,我只是添加了以下代码,以防止在文本框上设置焦点的问题,这导致它滚动到底部:

class PanelNoScrollOnFocus : Panel
{
    protected override System.Drawing.Point ScrollToControl(Control activeControl)
    {
        return DisplayRectangle.Location;
    }
}

我收到了此代码from here,因此如果需要,您可以查看有关我使用该代码的详细信息。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

public Form1()
{
    InitializeComponent();
    textBox1.MouseWheel += textBox1_MouseWheel;
    panel1.KeyDown += panel1_KeyDown;
}

void panel1_KeyDown(object sender, KeyEventArgs e)
{
    textBox1.Focus();
}

void textBox1_MouseWheel(object sender, MouseEventArgs e)
{
    panel1.Focus();
}