从另一种形式,呼吁一种形式的方法,组合框填写在Form1上如果单击Form 2上的一个按钮 [英] calling method on one form from another form, fill combobox on Form1 if a button on Form2 is clicked

查看:158
本文介绍了从另一种形式,呼吁一种形式的方法,组合框填写在Form1上如果单击Form 2上的一个按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要填写在Form1上,单击Form 2上的OK按钮时组合框。

首先,在Form1上加载窗体2按钮被点击,以显示窗体2。 于是,出现Form2,如果OK(按钮在Form2)是pssed则Form1的组合框必须从SQL Server数据库的桌子上摆满了价值$ P $。

 公共部分Form1类:表格
{
     公共无效LoadValue()
        {
            查询字符串=SELECT全名FROM道钉;

            的SqlCommand CMD =新的SqlCommand(查询,FORM1conn);

                SqlDataReader的读者= cmd.ExecuteReader();
                而(reader.Read())
                {
                    FORM1COMBOBOX.Items.Add(reader.GetString(0));
                }
        }
}

公共部分类FORM2:表
{
        私人无效FORM2_OK_Button_Click(对象发件人,EventArgs的)
        {
               //这里我要调用LOADVALUE()方法Form1的????????
         }
}
 

编辑: 在fo​​rm2.cs:

 公共部分类FORM2:表
{

    公共FORM2(SqlConnection的connfromFORM3)
    {
        Form2Conn = connfromFORM3;
        的InitializeComponent();
    }

    私人Form1的Form1中;
    公共SELECTGROUPHEADDIALOG(FORM1窗口1):这个()
    {
        this.form1 = Form1中;
    }

        私人无效FORM2_OK_Button_Click(对象发件人,EventArgs的)
        {
               //这里我要调用LOADVALUE()方法Form1的????????
         }
}
 

解决方案

更新

您可以尝试通过Form1的实例在窗体2的构造

例如:

 公共部分类Form1中:形态
{
    公共Form1中()
    {
        的InitializeComponent();
    }

    私人无效的button1_Click(对象发件人,EventArgs的)
    {
        窗体2窗口2 =新的窗体2(本);
        form2.Show();
    }

    内部空隙TestMethod的()
    {
        抛出新的NotImplementedException();
    }
}

公共部分类窗体2:表
{
    私人Form1的Form1中;

    公共窗体2()
    {
        的InitializeComponent();
    }

    公共窗体2(Form1的Form1中)
        : 本()
    {
        // TODO:完整的成员初始化
        this.form1 = Form1中;
    }

    私人无效的button1_Click(对象发件人,EventArgs的)
    {
        form1.TestMethod();
    }
}
 

更新

试试这个:

 公共FORM2(SqlConnection的connfromFORM3,FORM1窗口1)
{
    this.form1 = Form1中;
    Form2Conn = connfromFORM3;
    的InitializeComponent();
}
 

I want to fill a combobox on Form1 , when the OK button on Form2 is clicked.

First, the Load Form2 button on Form1 is clicked to display Form2. Then, Form2 appears, and if OK(Button on Form2) is pressed then the Form1 ComboBox must be filled with values from a SQL SERVER database table.

public partial class FORM1 : Form
{
     public void LoadValue()
        {
            string query = "SELECT FullName FROM Studs ";

            SqlCommand cmd = new SqlCommand(query, FORM1conn);

                SqlDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    FORM1COMBOBOX.Items.Add(reader.GetString(0));
                }
        }
}

public partial class FORM2 : Form
{
        private void FORM2_OK_Button_Click(object sender, EventArgs e)
        {
               //HERE I WANT TO CALL THE  LOADVALUE() METHOD OF FORM1  ????????
         }
}

EDIT: In form2.cs :

public partial class FORM2 : Form
{

    public  FORM2(SqlConnection connfromFORM3)
    {
        Form2Conn = connfromFORM3;
        InitializeComponent();
    }

    private Form1 form1;
    public SELECTGROUPHEADDIALOG(FORM1 form1) : this()
    {
        this.form1 = form1;
    }

        private void FORM2_OK_Button_Click(object sender, EventArgs e)
        {
               //HERE I WANT TO CALL THE  LOADVALUE() METHOD OF FORM1  ????????
         }
}

解决方案

Updated

You can try passing Form1 instance in the constructor of Form2

Example:

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2(this);
        form2.Show();
    }

    internal void TestMethod()
    {
        throw new NotImplementedException();
    }
}

public partial class Form2 : Form
{
    private Form1 form1;

    public Form2()
    {
        InitializeComponent();
    }

    public Form2(Form1 form1)
        : this()
    {
        // TODO: Complete member initialization
        this.form1 = form1;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        form1.TestMethod();
    }
}

Updated

try this:

public  FORM2(SqlConnection connfromFORM3, FORM1 form1)
{
    this.form1 = form1;
    Form2Conn = connfromFORM3;
    InitializeComponent();
}

这篇关于从另一种形式,呼吁一种形式的方法,组合框填写在Form1上如果单击Form 2上的一个按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆