如何从C#中的另一个cs文件访问表单对象
在form.cs文件中,我有两个按钮,一个备忘录和一个计时器。我的问题是:如何从另一个cs文件访问计时器或备忘录?
我试图将这些对象公之于众,但它没有用,请给我一个来源或项目,所以我可以看到我错了。
谢谢!
在设计器中选择您的按钮,转到它的属性并将“修改器”属性从Private更改为Public。
然后你可以从另一个类访问它,如下所示:
public static class Test { public static void DisalbeMyButton() { var form = Form.ActiveForm as Form1; if (form != null) { form.MyButton.Enabled = false; } } }
注意:这只是一个例子,绝对不是好设计的模式:-)
每当我听到有人在谈论“另一个.cs文件”或“另一个.vb文件”时,我都会担心。 它经常(但并非总是)表明缺乏对编程的理解,至少是OO编程。 文件中有什么? 一节课? 二?
你不是试图从另一个文件中访问这些东西,而是试图从类的方法或VB中的模块访问它们。
您的问题的答案取决于您尝试访问这些内容的类和方法的性质,以及您想要访问它们的原因。
编辑问题以包含此信息后,您收到的答案可能会向您显示您不应该在表单类本身以外的类中访问表单的这些私有部分。
在Program.cs中已经有Form对象,但它没有引用。 通过简单的编辑,您可以转动
Application.Run(new Form1());
至
Application.Run(formInstance = new Form1());
声明它
public static Form1 formInstance;
并使用
Program.formInstance.MyFunction(params);
虽然我同意约翰桑德斯的观点,但是你可能做错了一件事,假设你通过公共修饰语可以访问所有内容,那就是你没有那个表格的实例。
例如,您可以这样做:
Form1 myForm = new Form1; string theButtonTextIAmLookingFor = myForm.MyButton.Text;
我假设您可能尝试访问它,就像它是静态的,像这样:
string theButtonTextIAmLookingFor = Form1.MyButton.Text;
只是你可能要检查的东西。
直观的选项只是让控制字段公开这里是解决这个问题的一个非常好的解决方案..