繁体   English   中英

如何防止用户控件窃取焦点?

[英]How to prevent user control from stealing focus?

我创建了一个充当键盘的用户控件。 我以与键盘完全相同的方式在控件中排列按钮,然后设置(ControlStyles.Selectable, false) 这使焦点可以停留在用户在父窗体上选择的文本框中。 我还将用户控件的样式设置为不可选择。 当用户按下按钮时,一切工作都很好,但是当用户控件被单击时,它会将焦点从文本框移开。 这是我的代码:

public partial class TouchKeyboard : UserControl
    {
        public TouchKeyboard()
        {
            InitializeComponent();
            SetStyle(ControlStyles.Selectable, false);

        }

        private void TouchKeyboard_Load(object sender, EventArgs e)
        {
            foreach (var button in this.Controls.OfType<CustomControls.CustomButton>())
            {
                button.Click += new EventHandler(this.ButtonClick);
            }
        }

        private void ButtonClick(object sender, EventArgs e)
        {
            var button = sender as CustomControls.CustomButton;

            if (button.Name == "btnSpace")
            {
                SendKeys.Send(" ");
            }
            else
            {
                SendKeys.Send("{" + button.Text + "}");
            }
        }
    }

ControlStyles.Selectable设置为false时,为什么我的用户控件会抢占焦点?

经过几天的努力,我终于弄清楚了。 由于面板无法吸引焦点,因此我将面板固定在用户控件中,并将按钮放在其中。 这解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM