【问题标题】:Catch Textbox event from another Form从另一个表单捕获文本框事件
【发布时间】:2015-01-20 13:28:04
【问题描述】:

我的表单中有一个事件:

 public void filterByType_TextChanged(object sender, EventArgs e)
    {
        dSearch = new D_Search(this);
        dSearch.filterD(); }

调用另一个类中的函数。我想做的是我想在我的课堂上注意到哪个文本框被改变并做一些事情。所以有多个像上面这样的函数,它们都在我的 DSearch 类中调用“filterD()”函数。我试过了

if (sender == form1.filterByType_TextChanged)
        { sqlCmd = new SqlCommand("SELECT * FROM" } //SQL Statement
        }

     datTable = new DataTable();
        sqlDatAdapter = new SqlDataAdapter(sqlCmd.CommandText, 
        connection);
        sqlDatAdapter.Fill(datTable);

        form1.setDataGrid = datTable;

但他找不到“发件人”我也尝试在我的表单中的函数内创建一个新按钮并传递它,但它似乎不起作用。

【问题讨论】:

    标签: c# winforms events textbox


    【解决方案1】:

    试试这个 -

    在表格 1 中

    private void textBox1_TextChanged(object sender, EventArgs e)
    {
         var dSearch = new D_Search(this);
         MessageBox.Show(dSearch.filterD(sender));
    }
    

    D_Search 类

    public class D_Search
    {
        Form1 frm = null;
    
        public D_Search(Form1 frm1)
        {
            frm = frm1;
        }
    
        public string filterD(object sender)
        {
            string val = String.Empty;
            if (sender == frm.textBox1)
            {
                val = (sender as TextBox).Text;
            }
            return val;
        }
    }
    

    如果您想访问其他类中的filterByType_TextChanged 文本框,请将其修饰符属性更改为Internal

    【讨论】:

    • 不工作。 dSearch.filterD() 是我在表单中调用事件的函数。他仍然不知道发件人。
    • 我得到一个 NullReferenceException,因为当他退出 if 语句时,我有“datTable = new DataTable()”和“sqlDatAdapter = new SqlDataAdapter(sqlCmd.CommandText, connection);”写了,我在 SqlAdapter 语句中得到了异常
    • 那是另一回事。我相信我已经回答了您的问题,如果是,请将此标记为答案。对于另一个错误,请发布一个新问题。
    • 请贴出准确的代码不要写。您发布的代码有语法错误。
    • 我贴出来了。我只是没有完全发布 SQL 代码。 - 好的,现在它应该可以工作了
    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多