我如何强制VB.net,一个ENTER创建一个新行,而不是关闭对话框?

时间:2009-05-24 21:03:26

标签: vb.net user-interface

我已经使用RichTextBox构建了一个对话框,我想这样做 有以下行为:

我在RichTextBox中得到了焦点(光标)。 按下ENTER键后,富编辑中应该有一个新行 控制创建。 ENTER不应该关闭对话框[就像现在这样:-(]。

任何想法?

2 个答案:

答案 0 :(得分:4)

如果分配了表单的AcceptButton属性,引用表单上的按钮,则会拦截按下回车键。确保表单没有分配任何AcceptButton,并且文本框应该按下回车键并按预期运行。

更新:如果你想拥有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;
}

答案 1 :(得分:0)

你的意思是RichTextBox对吗?您需要将AcceptsReturn属性设置为true。