[英]How to access form objects from another cs file in C#
在form.cs文件中,我有两个按钮,一个备忘录和一个计时器。我的问题是:如何从另一个CS文件访问计时器或备忘录?
我试图将对象公开,但没有用,请给我一个资源或项目,这样我就可以知道我在哪里弄错了。
谢谢!
在设计器中选择按钮,转到其属性,然后将“修饰符”属性从“私有”更改为“公共”。
然后,您可以从另一个类访问它,如下所示:
public static class Test
{
public static void DisalbeMyButton()
{
var form = Form.ActiveForm as Form1;
if (form != null)
{
form.MyButton.Enabled = false;
}
}
}
注意:这仅是示例,绝对不是良好设计的模式:-)
在Program.cs中已经实例化了Form对象,但没有引用。 通过简单的编辑,您可以
Application.Run(new Form1());
至
Application.Run(formInstance = new Form1());
声明像
public static Form1 formInstance;
和使用
Program.formInstance.MyFunction(params);
每当我听到有人谈论“另一个.cs文件”或“另一个.vb文件”时,我都会感到担心。 它经常(尽管不总是)表明对编程(至少对OO编程)缺乏了解。 什么是在文件吗? 一堂课 二?
您并不是要从另一个文件访问这些东西,而是要尝试从类的方法或可能是VB中的模块的方法访问它们。
问题的答案将取决于您尝试从中访问这些内容的类和方法的性质,以及您要访问它们的原因。
一旦您对问题进行编辑以包括此信息,收到的答案可能会告诉您,除了表单类本身以外,您不应该在其他类中访问表单的这些私有部分。
尽管我同意约翰·桑德斯的观点,但假设您可以通过公共修饰符访问所有内容,那么您可能做错了一件事情,那就是您没有该表单的实例。
例如,这是您要执行的操作:
Form1 myForm = new Form1;
string theButtonTextIAmLookingFor = myForm.MyButton.Text;
我假设您可能正在尝试像静态访问它,如下所示:
string theButtonTextIAmLookingFor = Form1.MyButton.Text;
这只是您可能要检查的内容。
直观的选择只是使控制字段公开。这是解决此问题的一个很好的解决方案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.