我搜索一种简单的方法来访问不同形式的不同控件,而不需要像我这样做的任何解决方法。 G。在Visual Basic 6中。
示例:
Form3.pictureBox1.Image = MyImage;
但不知何故,C#不允许访问另一个表单上的其他控件,甚至不能访问我自己的类。我已经将Form3中的“pictureBox1
”更改为public
,如果我键入“Form3”,C#仍然不知道此控件。
我需要做什么才能访问我的控件?我已经使用提升的权限运行Visual Studio(Microsoft在我们的支持区域回答了我的问题,提升的权限对于访问其他表单及其上的控件很重要)但没有任何帮助我使用。所以我现在总是使用C#中的一个表单,这不适合开发任何应用程序。大多数应用程序需要多个表单,因此应该是从类或其他形式的任何上下文访问控件的简单方法。我不想使用任何“设置......或获取属性” - 我甚至不知道如何!在某个地方,我发现了这个特定的解决方法,但我通常在我的应用程序中有很多控件和标签可供访问,如果每个控件属性都需要get-和set-statement或者要写入的任何内容,这会产生大量无用的开销。
即使需要提升,也许有人会以更简单的方式知道更优雅的方法。
答案 0 :(得分:2)
在VB6中,你可以使用类名访问表单的默认实例,在VB.Net中他们继续这种行为。 C#没有这种行为,因此您必须创建自己的表单实例。否则你试图像静态类一样使用它。即使你不想这样做,你想要的最好的方法就是通过它保存所有内容的属性来公开它们。
Form3 frm3 = new Form3();
frm3.pictureBox1.Image = Image.FromFile("ImageName");
frm3.Show();
答案 1 :(得分:1)
我想我知道出了什么问题。 Form1
和Form3
实际上是类,因此键入Form1.something
表示something
必须是静态成员。为了能够访问图片,您需要一个类的实例。
为了更好地解释这个,这是一个例子:
string a;
string
是类类型,a
是该类的实例。
执行此操作的方法是修改启动代码(在Program.cs
源文件中的窗体表单中),并将表单保存在静态类中,然后从那里访问它。
这可能是Program.cs的样子:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
您可以看到正在创建Form1的新实例,即new关键字的功能。您还可以执行以下操作:
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 f = new Form1();
Application.Run(f);
}
变量f
包含正在显示的表单。
我真的不知道你的程序是如何工作的,但无论如何......为了能够访问Form3
的成员,你需要找到实例。也许你的代码中有new Form3().Show()
,我不确切知道......但你需要将它保存到变量中,这就是你可以访问它的方式。
答案 2 :(得分:1)
您需要将对象的修饰符属性更改为public,而不是创建表单实例并调用所需的对象
Form2 frm2 = new Form2();
frm2.show();
frm2.pictureBox1.Image = "MyImage";
答案 3 :(得分:0)
Form3可以参考该课程。您需要使用对象来访问picturebox1(或使字段静态)