我正在尝试从另一个Program.cs文件中访问datagridview1 datagridview1在form1中,但它总是给我一个错误 Form1不包含datagridview1
的定义非静态字段,方法或属性需要对象引用' Form1.dataGridView1'
foreach (string i in AllCourses.Keys)
{
if (TmpStd.coursesF.Contains(i) || TmpStd.coursesIP.Contains(i))
{
continue;
}
if (AllCourses[i].prerequired_courses == "None")
{
Form1.dataGridView1.Rows.Add(i, AllCourses[i].name);
}
}
答案 0 :(得分:0)
您需要先声明Form1。试试这个:
Form1 datagridForm = new Form1()
foreach (string i in AllCourses.Keys)
{
if (TmpStd.coursesF.Contains(i) || TmpStd.coursesIP.Contains(i))
{
continue;
}
if (AllCourses[i].prerequired_courses == "None")
{
datagridForm.dataGridView1.Rows.Add(i, AllCourses[i].name);
}
}
请注意,根据您的整体实现,您可能需要以不同方式声明Form1变量或将其作为整体函数的一部分传递。
答案 1 :(得分:0)
最有可能dataGridView1
是私有的,因此您无法从表单外部访问它。如果是这种情况,请在form1中创建一个如下属性:
public DataGridView DataGridView1 { get { return this.data1ridview1; }}
另外,我会将datagridview称为更有意义的名称,而不是datagridview1
,例如dataGridViewStudents或其他有意义的名称。
然后,您可以使用DataGridView1
所在的类的实例来访问它。Form1
是一个类,但这不是该类的实例。因此,如果表单是这样创建的:
Form1 myForm = new Form1();
然后'myForm'是类Form1
的一个实例。然后我可以像这样访问datagridview:
var grid = myForm.DataGridView1;
答案 2 :(得分:0)
由于您尝试从Program.cs类访问DataGridView,因此您遇到了设计问题。
无论如何,如果你仍然想这样做,你必须将DataGridView的Visibility属性更改为'Public',然后你就可以按照你想要的方式访问它。
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
// I didn´t declare all you need
[STAThread]
static void Main()
{
Form1 yourForm = new Form1();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(yourForm);
foreach (string i in AllCourses.Keys)
{
if (TmpStd.coursesF.Contains(i) || TmpStd.coursesIP.Contains(i))
{
continue;
}
if (AllCourses[i].prerequired_courses == "None")
{
yourForm.dataGridView1.Rows.Add(i, AllCourses[i].name);
}
}
}
}