我在 Form1
中有一个 DataGridView
,我正在使用此代码显示另一个名为 Generator
的表单:
private void button1_Click(object sender, EventArgs e)
{
Form gen = new Generator();
// Form gen = new Generator(Form this); //* I tried this but is not working *//
gen.Show();
}
在 Generator
表单中,我需要读取或修改 Form1
中的 datagridview 中的某些内容。
public partial class Generator : Form
{
public Form myForm;
public Generator()
{
InitializeComponent();
}
public Generator(Form frm)
{
myForm = frm;
}
private void button1_Click(object sender, EventArgs e)
{
myForm.mydatagridview.! // this is not working
}
}
如何解决这个问题,以便我可以从 Generator
表单中操作 DataGridView
?
最佳答案
表格 1:
private void button1_Click(object sender, EventArgs e)
{
Form gen = new Generator(this.mydatagridview);
gen.Show();
}
生成器表单:
DataGridView _dataGridView;
public Generator(DataGridView dataGridView)
{
InitializeComponent();
this._dataGridView = dataGridView;
}
private void button1_Click(object sender, EventArgs e)
{
this._dataGridView...! // this will work
}
您必须做和知道的事情(只是提示,您不是被迫做这些,但我相信如果您这样做,您会成为更好的程序员!;)
始终在所有表单构造函数中调用 InitializeComponent()。在您的示例中,您没有在其中一个构造函数中调用它。
C# 只知道您传递的类型的信息。如果你传递一个表单,那么你只会得到表单属性(即类型表单的属性),而不是你自己的表单的属性。
尝试封装事物。不要将整个表单传递给另一个表单。相反,传递您想在其他表单上使用的内容。
关于c# - 从另一种形式调用变量 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5928071/