Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中编写类方法来处理现有表单#_C# - Fatal编程技术网

C# 如何在c中编写类方法来处理现有表单#

C# 如何在c中编写类方法来处理现有表单#,c#,C#,我的项目中有两个表格,表格1和表格2。我已经在我的项目中添加了一个新类。它有一个接受表单对象的方法,应该能够执行以下操作 显示接受的表单对象(frm.ShowDialog()) 当我在显示的表单(frm)上按ENTER键时,它应该关闭。(不向form2 s按键事件添加代码)。它应该由新添加的类处理 我试图添加新的keyeventhandler,但我不知道如何从这里开始。请帮我解决这个问题。多谢各位 class Class1 { public static void SearchResul

我的项目中有两个表格,表格1和表格2。我已经在我的项目中添加了一个新类。它有一个接受表单对象的方法,应该能够执行以下操作

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

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

  • 我试图添加新的keyeventhandler,但我不知道如何从这里开始。请帮我解决这个问题。多谢各位

    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();
        }
    
    }
    
    frm.close()和frm.dispose()不会执行您要求的任务

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

    创建自己的
    表单
    类并使用,如下所示

    public class MyOwnForm : Form 
    {
        private override OnLoad(...)
        {
            base.OnLoad(..);
    
            AcceptButton = yourOkButtonObject;
        }
    }
    

    其中,
    yourOkButtonObject
    是“OK”buton的对象,我假设它出现在你的表单上。如果没有确认表单的任何其他按钮。

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

    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();
                 }
            }         
        }
    }  
    

    谢谢你,史蒂夫。这给了我一个错误。“警告1”字段“WindowsFormsApplication15.Class1.\u frm”从未分配给,且其默认值始终为null“应答更新”。我假设这将避免错误,但现在无法测试。谢谢你,嗯。frm.close()和frm.dispose()不起作用,因为我在类中使用了不同的方法。@chaarr-这是什么意思?如果您正在向表单发送引用,那么它应该可以工作,当然前提是您正在调用该方法。您可以将表单的AcceptButton设置为在表单类型中按ENTER按钮时“单击”所需的按钮。在程序中使用表单类型之后。因此,应用程序中的所有窗体都将在按下ENTER按钮时关闭