繁体   English   中英

如何从C#中的另一个CS文件访问表单对象

[英]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;

这只是您可能要检查的内容。

直观的选择只是使控制字段公开。这是解决此问题的一个很好的解决方案。

http://searchwindevelopment.techtarget.com/answer/In-C-how-can-I-change-the-properties-of-controls-on-another-form

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM