儿童表单关闭输入点击

时间:2014-01-01 07:49:01

标签: c# winforms keyup

我有两种表单Frm1Frm2

两者都有单textbox

在第一个表单keyup的{​​{1}}事件中,如果textboxKeyChar,则会打开第二个表单。

现在,在ENTER的第KeyUp次事件中,我正在关闭此表单提交。

现在调用两个事件。有没有办法摆脱这个?

textbox

现在采用第二种形式

 private void textBox1_KeyUp(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                Frm2 frm=new Frm2();
                Frm2.RefToForm1=this;
                frm.StartPosition = FormStartPosition.CenterParent;
                frm.ShowDialog(this);
            }

        }

问题是当我在private void textBox2_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { this.RefToForm1.textBox1.Text=textBox2.Text; this.Close() } } 上按Enter键时,textBox1会立即打开并关闭。

任何解决方案

4 个答案:

答案 0 :(得分:1)

在表单2中定义一个布尔变量,最初将其设置为false并根据该变量关闭表单。您可以在以后需要时将其设置为true。您可以使用文本框的GotFocus方法将其设置为true。例如

    textBox2.GotFocus += textBox2_GotFocus; 

在textBox2_GotFocus方法中将布尔值设置为true。你的key_up方法如下所示:

    private void textBox2_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
           if(boolean_var){
               this.RefToForm1.textBox1.Text=textBox2.Text;
               this.Close();
           }
        }

    }

答案 1 :(得分:1)

没有理由在重点关注textBox1并且尚未打开Frm2的实例时发布Enter键,也会在KeyUp textBox2上引发Frm2事件{1}}。

您确定项目中没有一些导致此行为的添加代码吗?您是否尝试在this.Close()方法的textBox2_GotFocus中设置断点,以查看它是否在您的方案中实际执行了?

我甚至使用您的代码创建了一个小型示例项目,并进行了一些小修改以使其工作(在评论中解释):

private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        Frm2 frm=new Frm2();
        frm.RefToForm1=this; // you said RefToForm1 isn't static and it shouldn't be
        frm.StartPosition = FormStartPosition.CenterParent;
        frm.ShowDialog(this);
    }
}

private void textBox2_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        this.RefToForm1.textBox1.Text=textBox2.Text;
        this.Close(); // missing semicolon
    }
}

public Form1 RefToForm1 { get; set; } // property in Frm2

您可以从here下载此工作示例项目。

答案 2 :(得分:1)

您可以为 -

设置Windows窗体属性

1- AcceptButton - 按钮ID(您必须在哪个按钮上提交。) 2 - CancelButton - 按钮ID(您必须在哪个按钮上关闭表单。)

答案 3 :(得分:0)

如果文本框为空,也许你可以阻止第二种形式关闭 - 假设某些东西需要进入它关闭它。

您能否向我们提供有关您尝试使用此功能的更多信息?也许还有另一种方法可以解决您尝试创建的功能。