C# 禁用自定义控件中滚动条的焦点
我在Windows窗体中编写了一个自定义控件。我动态地创建一个垂直滚动条并捕获其值的变化 目前,滚动条是唯一可以获取焦点的控件,因此我的控件充当面板:它将焦点转移到滚动条。当用户使用滚动条时,所有进一步的键盘事件都会传输到滚动条,而不是控制本身 我希望完全禁用滚动条的焦点,并在控件本身中实现适当的行为(例如,向上翻页、向下翻页、主页、结束等)。我发现了一个名为“CanFocus”的属性,但不幸的是它是只读的C# 禁用自定义控件中滚动条的焦点,c#,winforms,focus,scrollbar,C#,Winforms,Focus,Scrollbar,我在Windows窗体中编写了一个自定义控件。我动态地创建一个垂直滚动条并捕获其值的变化 目前,滚动条是唯一可以获取焦点的控件,因此我的控件充当面板:它将焦点转移到滚动条。当用户使用滚动条时,所有进一步的键盘事件都会传输到滚动条,而不是控制本身 我希望完全禁用滚动条的焦点,并在控件本身中实现适当的行为(例如,向上翻页、向下翻页、主页、结束等)。我发现了一个名为“CanFocus”的属性,但不幸的是它是只读的 如何禁用滚动条的对焦功能?我知道,我可以实现焦点事件并手动将焦点转移到控件,但WF库中可
如何禁用滚动条的对焦功能?我知道,我可以实现焦点事件并手动将焦点转移到控件,但WF库中可能有现成的解决方案?感谢Łukasz O.的帮助 解决方案:
public class MyVScrollBar : VScrollBar
{
public MyVScrollBar()
{
SetStyle(ControlStyles.Selectable, false);
}
}
public partial class UserControl1 : UserControl
{
protected override void OnKeyDown(KeyEventArgs e)
{
MessageBox.Show("KeyDown: " + e.KeyCode.ToString());
base.OnKeyDown(e);
}
protected override bool IsInputKey(Keys keyData)
{
if (keyData == Keys.Up || keyData == Keys.Down || keyData == Keys.Left || keyData == Keys.Right)
return true;
else
return base.IsInputKey(keyData);
}
public UserControl1()
{
SetStyle(ControlStyles.Selectable, true);
InitializeComponent();
}
}