0

パネルがあります。このパネルの高さは 500px です。そのパネル内には複数行のテキスト ボックスがあり、これはパネルよりも大きくなっています。高さが 1000px だとしましょう。

パネルはスクロールバーが表示されるように設定されており、マウスホイールとスクロールバーをドラッグすることで細かくスクロールします。ただし、テキスト ボックス内のテキストを選択 (強調表示) し、表示されたテキストを超えて選択範囲をドラッグすると、スクロールしませんが、スクロールしたいです。ブラウザーで、目に見える範囲を超えてテキストを選択する場合とよく似ています。

私のパネルがカスタマイズされていることはおそらく注目に値しますが、それほど多くはありませんが、テキストボックスにフォーカスを設定する際の問題を防ぐために次のコードを追加しただけで、下にスクロールします。

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

このコードは here から取得したので、必要に応じて使用する理由についての詳細を確認できます。

4

1 に答える 1

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();
}
于 2013-06-18T11:41:54.133 に答える