【发布时间】:2009-05-24 21:03:26
【问题描述】:
我用 RichTextBox 构建了一个对话框,我想 有以下行为:
我在 RichTextBox 中获得了焦点(光标)。 当按下 ENTER 键时,富编辑中应该有一个新行 创建的控件。 ENTER 不应该关闭对话框 [就像现在这样 :-( ].
有什么想法吗?
【问题讨论】:
-
感谢您提出这个问题。我也有同样的问题。
标签: vb.net user-interface
我用 RichTextBox 构建了一个对话框,我想 有以下行为:
我在 RichTextBox 中获得了焦点(光标)。 当按下 ENTER 键时,富编辑中应该有一个新行 创建的控件。 ENTER 不应该关闭对话框 [就像现在这样 :-( ].
有什么想法吗?
【问题讨论】:
标签: vb.net user-interface
如果表单的AcceptButton 属性被分配,引用表单上的一个按钮,这将拦截回车键按下。确保表单没有分配任何 AcceptButton,并且文本框应该接收到 Enter 按键并按预期运行。
更新:如果您想拥有 AcceptButton 的行为并让 RichTextBox 在获得焦点时接收回车键按下,您可以通过两种不同的方式实现此目的。一种是设置表单的KeyPreview属性为true,在表单的KeyPress事件处理函数中加入如下代码:
private void Form_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.Enter && this.ActiveControl != theRichTextBox)
{
this.DialogResult = DialogResult.OK;
}
}
另一种方法是分配 AcceptButton 属性,指出一个按钮(该按钮又将其 DialogResult 属性设置为 OK)。然后,您可以为 RichTextBox 控件的 Enter 和 Leave 事件添加事件处理程序,这将暂时取消分配表单的 AcceptButton 属性:
private void RichTextBox_Enter(object sender, EventArgs e)
{
this.AcceptButton = null;
}
private void RichTextBox_Leave(object sender, EventArgs e)
{
this.AcceptButton = btnAccept;
}
【讨论】:
你的意思是 RichTextBox 对吧?您需要将 AcceptsReturn 属性设置为 true。
【讨论】: