1

我的项目中有两个表格,form1 和 form2。我在我的项目中添加了一个新类。它有一个接受表单对象的方法,它应该能够做以下事情。

  1. 显示接受的表单对象 (frm.ShowDialog())

  2. 当我在显示的表单(frm)上按回车键时,它应该关闭。(不向 form2 的 keydown 事件添加代码)。它应该由新添加的类处理。

我试图添加新的 keyeventhandler,但我不知道如何从这里开始。(Dispose()不起作用)请帮我解决这个问题。谢谢你。

class Class1
{
    public static void SearchResultBox(Form2 frm) 
    {            
        frm.KeyDown += new KeyEventHandler(frm_KeyDown);
        frm.ShowDialog();

    }

    static void frm_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode==Keys.Enter)
        {


        }
        throw new NotImplementedException();
    }

}
4

3 回答 3

0

frm.close() 和 frm.dispose() 不会执行您要求的任务。

static void frm_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode==Keys.Enter)
    {
        frm.close();
        frm.dispose();

    }
    throw new NotImplementedException();
}
于 2012-06-20T10:52:20.680 回答
0

创建自己的Form类并使用AcceptButton,像这样

public class MyOwnForm : Form 
{
    private override OnLoad(...)
    {
        base.OnLoad(..);

        AcceptButton = yourOkButtonObject;
    }
}

我想在您的表单上出现yourOkButtonObject的“确定”按钮的对象在哪里。如果没有确认表单的任何其他按钮。

于 2012-06-20T10:53:00.643 回答
0

您需要保留对传入表单的引用,然后使用该引用关闭表单

class Class1 
{   
    private static Form2 _frm = null;  
    public static void SearchResultBox(Form2 frm)      
    {                     
         _frm = frm;
         frm.KeyDown += new KeyEventHandler(frm_KeyDown);         
         frm.ShowDialog();      
    }      
    static void frm_KeyDown(object sender, KeyEventArgs e)     
    {         
        if (e.KeyCode==Keys.Enter)         
        {     
             if(_frm != null)
             {      
                 _frm.Close();
                 _frm.Dispose();
             }
        }         
    }
}  
于 2012-06-20T10:53:09.247 回答