从另一个窗体c#调用变量gen=new生成器();//Formgen=newGenerator(Formthis);//*我试过了但是没有用*//gen.Show();在Generatorform中,我需要读取或修改Form1datagridview中的内容。publicpartialclassGenerator:Form{publicFormmyForm;publicGenerator(){InitializeComponent();}publicGenerator(Formfrm){myForm=frm;}privatevoidbutton1_Click(objectsender,EventArgse){myForm.mydatagridview.!//这是行不通的}}我该如何解决这个问题,以便我可以从生成器表单中操作DataGridView。谢谢。形式1:privatevoidbutton1_Click(objectsender,EventArgse){Formgen=newGenerator(this.mydatagridview);gen.Show();}生成器形式:DataGridView_dataGridView;publicGenerator(DataGridViewdataGridView){InitializeComponent();this._dataGridView=dataGridView;}privatevoidbutton1_Click(objectsender,EventArgse){this._dataGridView...!//这会起作用}你必须做和知道的事情(只是一个提示,你不是被迫这样做,但我相信如果你这样做,你会成为一个更好的程序员!)总是在所有形式的构造函数中调用InitializeComponent().在您的示例中,您没有在其中一个构造函数中调用它。C#只知道有关您传递的类型的信息。如果你传递一个表单,那么你只得到表单的属性(即表单类型的属性),而不是你自己的表单的属性。尝试封装事物。不要将整个表单传递给另一个表单。相反,传递你想在另一个表单上使用的内容。这里发生了一些事情。您必须使用Generator的构造函数,它将表单作为参数。您必须将datagridview公开为将传递给生成器的表单上的公共或内部属性。一个普通的Form类不会知道这个属性,所以你应该适当地转换变量。在使用其他构造函数时,您应该调用Generator的默认构造函数以确保所有内容都已正确初始化。请参阅下面的代码示例,类似这样的代码应该可以工作:publicclassGenerator{privateMyFormmyForm;publicGenerator(){InitializeComponent();}publicGenerator(MyFormfrm):this()//不要忘记这个(){myForm=frm;}privatevoidbutton1_Click(objectsender,EventArgse){myForm.MyDataGridView...//耶,它起作用了!}}publicclassMyForm:Form{publicMyForm(){InitializeComponent();//这里创建了一个datagridview,比如说“datagridview1”}publicDataGridViewMyDataGridView{get{returndatagridview1;然后在你的按钮点击事件中(我假设在MyForm的某处定义):privatevoidbutton1_Click(objectsender,EventArgse){gen.Show();最简单的方法是打开Form1上的DataGridView(myDataGridView)的设计器并将Modifiers属性从私有更改为内部或公共这将允许您从Generator表单调用myForm.myDataGridView。以上就是C#学习教程:从另一种形式调用变量c#全部内容分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
