从另一个表单捕获文本框事件

Catch Textbox event from another Form

我的表单中有一个事件:

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

调用另一个 class 中的函数。我想要做的是我想在我的 class 中注意到哪个文本框被更改并做一些事情。所以有多个像上面的函数,它们都调用了我的 DSearch class 中的 "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;

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

试试这个 -

形式 1

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

D_Search class

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

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