0

我已经搜索了几个小时来了解如何做到这一点,但我找到的解决方案都没有奏效......

我有一个包含几个 ComboBox 的表单,我想获取选定的值并将其用于另一个类的方法中。这些值将用作过滤器中的变量以查询数据库。但是,在分配值时,我收到错误“非静态字段、方法或属性需要对象引用”。我尝试在另一个类中创建表单的新实例,但是新实例不会首先没有我想要的 ComboBox 值吗?

我不太确定如何做到这一点。我尝试了很多方法,但都失败了。=/我是编程新手,所以如果能得到任何帮助,我将不胜感激!

 public static void LoadMainTable(ref DataTable mainGridTable)
    {

        //Loads entires into a data table
        //FormMonitor FormMonitor = new FormMonitor();
        string bankBox = FormMonitor.ComboBox1.SelectedItem;
        string theDate = FormMonitor.DateTimePicker.Value.ToString("yyyy-MM-dd");



        //Grabbed in the order they will be displayed
        cmd.CommandText = String.Format("W.I.P.");
        //Add variables for filters after figuring out how to do it
        reader = cmd.ExecuteReader();


        //reads data into dmainGridTable
        while (reader.Read())
        {

            mainGridTable.Rows.Add(reader["column1"], reader["column2"], reader["column3"], reader["column4"].ToString(),
                                    reader["column5"].ToString(), reader["column6"]);
            //FormMonitor.file_ProgressUpdated(); //non-static error again, fix
            connect.Close();
        }
    }
4

2 回答 2

0

如果您使用窗体实例的 REFERENCE,则可以使用任何控件的值。您正在使用类名。

示例:现在,我的 winform 项目正在使用 MDI 作为主窗体。我有时需要在我的表单上选择一个 MonthCalendar 控件的值。我所做的是这种表单中的一种访问器,当我想要获取这些值时,我使用 MdiParent 来查找我的主表单(一个 MdiContainer),并找到了对包含 MonthCalendar 的表单的引用。我打电话给我的访问者。(使用访问器比直接获取控制值更干净)

当然,如果您的程序以不同的方式完成,您可能需要找到另一个逻辑。但这是一个基础。

于 2013-01-11T19:13:11.410 回答
0

您需要将组合框的选定值传递给方法。如果这不起作用,请发布更多代码,以便我们正确理解正在发生的事情

 public static void LoadMainTable(ref DataTable mainGridTable, string comboSelectedValue)
        {

            //Loads entires into a data table
            //FormMonitor FormMonitor = new FormMonitor();
            string bankBox = FormMonitor.ComboBox1.SelectedItem;
            string theDate = FormMonitor.DateTimePicker.Value.ToString("yyyy-MM-dd");



            //Grabbed in the order they will be displayed
            cmd.CommandText = String.Format("W.I.P.");
            //Add variables for filters after figuring out how to do it
            reader = cmd.ExecuteReader();


            //reads data into dmainGridTable
            while (reader.Read())
            {

                mainGridTable.Rows.Add(reader["column1"], reader["column2"], reader["column3"], reader["column4"].ToString(),
                                        reader["column5"].ToString(), reader["column6"]);
                //FormMonitor.file_ProgressUpdated(); //non-static error again, fix
                connect.Close();
            }

}

于 2013-01-11T18:51:05.617 回答