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

时间:2009-04-04 13:23:49

标签: c# forms object

在form.cs文件中,我有两个按钮,一个备忘录和一个计时器。我的问题是:如何从另一个cs文件访问计时器或备忘录?

我试图将这些对象公之于众,但它没有用,请给我一个来源或项目,这样我就可以看到我错了。

谢谢!

5 个答案:

答案 0 :(得分:15)

在设计器中选择您的按钮,转到它的属性并将“修改器”属性从私有更改为公共。

然后你可以从另一个类访问它,如下所示:

public static class Test
{
    public static void DisalbeMyButton()
    {
        var form = Form.ActiveForm as Form1;

        if (form != null)
        {
            form.MyButton.Enabled = false;
        }
    }
}

注意:这只是一个例子,绝对不是优秀设计的模式:-)

答案 1 :(得分:6)

每当我听到有人在谈论“另一个.cs文件”或“另一个.vb文件”时,我都会担心。它经常(尽管不总是)表明缺乏对编程的理解,至少是OO编程。 文件中的内容是什么?一节课?两个?

您不是试图从其他文件访问这些内容,而是尝试从类的方法或VB中的模块访问它们。

您的问题的答案将取决于您尝试访问这些内容的类和方法的性质,以及您想要访问它们的原因。

一旦您编辑问题以包含此信息,您收到的答案可能会告诉您不应该在表单类本身以外的类中访问表单的这些私有部分。

答案 2 :(得分:6)

在Program.cs中已经有Form对象,但它没有引用。通过简单的编辑,您可以转动

Application.Run(new Form1());

Application.Run(formInstance = new Form1());

声明它就像

public static Form1 formInstance;

并使用

Program.formInstance.MyFunction(params);

答案 3 :(得分:1)

虽然我同意约翰·桑德斯的观点,但是你可能做错了一件事,假设你通过公共修饰语可以访问所有内容,那就是你没有那个表格的实例。

例如,您可以这样做:

Form1 myForm = new Form1;
string theButtonTextIAmLookingFor = myForm.MyButton.Text;

我假设您可能尝试访问它,就像它是静态的,如下所示:

string theButtonTextIAmLookingFor = Form1.MyButton.Text;

您可能想要查看的内容。

答案 4 :(得分:0)

直观选项只是使控制字段公开 这是解决这个问题的一个非常好的解决方案..

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