在滚动时更改滚动条值,即使焦点位于其他对象上

本文关键字:于其他 其他 对象 焦点 滚动 滚动条 | 更新日期: 2023-09-27 18:26:00

我在窗体上有一个textBox和一个vScrollBar。我希望textBox有焦点,但当它有焦点时,使用鼠标上的滚动按钮不会更改滚动条值。如果滚动条有焦点,我可以很容易地用鼠标滚动,但在文本框中键入文本就不起作用了。有没有办法捕捉表单上的所有滚动按钮活动并将其重定向到滚动条?

在滚动时更改滚动条值,即使焦点位于其他对象上

处理TextBox的MouseWheel事件。。。

public frmSTOverScrollText()
{
    InitializeComponent();
    txtInput.MouseWheel += new MouseEventHandler(txtInput_MouseWheel);
}
void txtInput_MouseWheel(object sender, MouseEventArgs e)
{
    if (e.Delta < 0)
    {
        if (vsInput.Value + vsInput.LargeChange <= vsInput.Maximum)
            vsInput.Value += vsInput.LargeChange;
    }
    else if (vsInput.Value - vsInput.LargeChange >= vsInput.Minimum)
        vsInput.Value -= vsInput.LargeChange;
}

转到表单属性下,在事件类型中添加KeyDown事件:

yourTextBox.Text += e.KeyValue;

之后,转到文本框属性下,在事件类型中添加一个Enter事件:

this.Focus();

从本质上讲,将会发生的事情就是这样。该表单现在将每次按键指向文本框。当文本框处于焦点时,所述文本框将自行取消焦点,让表单将任何字符附加到文本框中。