问题是:如何使默认按钮专注于表格焦点和响应"Enter"点击,但是当插入符号位于文本框中并且多行属性设置为true时,没有聚焦?我知道我可以做一些例外在代码中,但也许有一些我现在不知道的"最佳实践":(谢谢
也许我弄错了,但我要做的是:
将表单的"AcceptButton"设置为要在"Enter"上响应的Button
将多行的文本框的"AcceptsReturn"设置为true
et voila
(编辑 - 这里的答案是非常好的TextBox
;这种模式可能对其他缺少AcceptsReturn
或等效的控件有用)
您可以使用GotFocus
和LostFocus
事件来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); } }