当前位置:  开发笔记 > 编程语言 > 正文

Windows窗体中的默认按钮命中(试图找到最佳解决方案)

如何解决《Windows窗体中的默认按钮命中(试图找到最佳解决方案)》经验,为你挑选了2个好方法。

问题是:如何使默认按钮专注于表格焦点和响应"Enter"点击,但是当插入符号位于文本框中并且多行属性设置为true时,没有聚焦?我知道我可以做一些例外在代码中,但也许有一些我现在不知道的"最佳实践":(谢谢



1> Xn0vv3r..:

也许我弄错了,但我要做的是:

    将表单的"AcceptButton"设置为要在"Enter"上响应的Button

    将多行的文本框的"AcceptsReturn"设置为true

et voila



2> Marc Gravell..:

(编辑 - 这里的答案是非常好的TextBox;这种模式可能对其他缺少AcceptsReturn或等效的控件有用)

您可以使用GotFocusLostFocus事件来AcceptButton轻松更改,例如:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    TextBox multi, single;
    Button btn;
    using(Form form = new Form {
            Controls = {
                (multi= new TextBox { Multiline = true, Dock = DockStyle.Fill}),
                (btn = new Button { Text = "OK", Dock = DockStyle.Bottom,
                    DialogResult = DialogResult.OK}),
                (single = new TextBox { Multiline = false, Dock = DockStyle.Top}),
            }, AcceptButton = btn                
        })
    {
        multi.GotFocus += delegate { form.AcceptButton = null; };
        multi.LostFocus += delegate { form.AcceptButton = btn; };
        btn.Click += delegate { form.Close(); };
        Application.Run(form);
    }
}

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有