如何从子窗体访问winforms父窗体控件

szqfcxe2  于 2023-02-09  发布在  其他
关注(0)|答案(2)|浏览(182)

在Form1中我有一个DataGridView和多个文本框。当我在Form2中单击按钮时,我需要将DataGridView和多个文本框中的数据保存到数据库中。如何在C sharp Windows应用程序中实现
Form1 Button Click事件。我打开了Form2

public sealed partial class form1 : Form
 {
   private static form1 instance = null;
    public static form1 Instance
    {
        get
        {
            if (instance == null)
            {
                instance = new form1();
            }
            return instance;
        }
    }

  private void button1_Click(object sender, EventArgs e)
    {
        textbox2.Text=100;
        form2 CO = new form2();
        CO.Show();
    }
}

我想将文本框数据和数据网格视图内容附加到对象SO并调用InsertSale函数。文本框和数据网格视图的格式为form1
这是窗体2中的按钮点击事件

private void button1_Click(object sender, EventArgs e)
  {
      clsSale SO = new clsSale();
      SO.Totamount = Convert.ToDecimal(form1.Instance.textBox2.Text);

      SO.InserSale(SO);
   }
qni6mghb

qni6mghb1#

如果Form2要访问Form1属性。
将ParentForm示例传递给ChildForm构造函数。在父窗体中添加一个公共方法以从子窗体更新其属性。

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

    public void SetTextBoxValue(string val)
    {
        this.textBox1.Text = val;
    }

    private void CreateForm2()
    {
         var form2 = new Form2(this);
         form2.Show();
    }
}

public partial class Form2: Form
{
    private Form1 form1;

    public Form2(Form1 frm1)
    {
        InitializeComponent();

        form1= frm1;
        form1.SetTextBoxValue("Value from Form2");
    }   
}
wfypjpf4

wfypjpf42#

1.在项目中创建一个全局类,如Global.cs,,然后声明以下变量:
公共静态Form 1 frm 1
公共静态Form 2 frm 2
1.声明Form类的变量- Form frm 1或Form frm 2等。
1.现在按如下所示从任意形式访问变量:
Global.frm1 =新窗体1()-用于主窗体1
显示对话框();
Global.frm2 =新窗体2()-用于主窗体1
显示对话框();
1.如果您想以任何形式访问控件,只需按如下方式扩展它们:frm1.txtBox1.Text
frm 2.按钮1.单击()等

相关问题