簡體   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