0

我希望我的問題是相關的,因爲我是一個新手。如何從Windows窗體訪問「公共靜態類」

例如,我有兩個編碼命名爲「Class1.cs」和「Form1.cs」。基本上,Class1.cs是發生圖像過濾的程序,同時在「Form1.cs」中是允許它從文件加載圖像的程序。我點擊按鈕處理它後,是否可以從「Form1.cs」訪問「Class1.cs」?

的Class1.cs

namespace MyProgram 
{ 
class Class1 
{ 
    public static class Class1Program 
    { 
    //my program for image filtering is starting at here 
    } 
} 
} 

Form1.cs的

namespace MyProgram 
{ 
public partial class Form1 : Form 
{ 
    public Form1() 
    { InitializeComponent(); } 

    private void LoadImageButton_Click(object sender, EventArgs e) 
    { 
    //My program here is to open up a file image right after I click on this button 
    } 

    private void ResultButton_Click(object sender, EventArgs e) 
    { 
    // Here is the part where I don't know how to access the program from "Class1.cs". 
    // I'm expecting the image that I've load before will be able to filter right after I clicked on this button 
    } 
} 
} 

我想知道是否有必要添加或編輯一些程序在「Program.c的」。

我希望我的問題能夠得到解答。非常感謝您的參與。

回答

0

你可以做的這兩件事之一:

namespace MyProgram 
{ 
    class Class1 
    { 
     public static int Class1Variable; 
    } 
} 

namespace MyProgram 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void LoadImageButton_Click(object sender, EventArgs e) 
     { 
      //Load image logic 
     } 

     private void ResultButton_Click(object sender, EventArgs e) 
     { 
      Class1.Class1Variable = 1; 
     } 
    } 
} 

2.You可以在裏面Form1中創建的Class1的一個實例:

1.You可以Class1使用靜態變量訪問數據

namespace MyProgram 
{ 
    class Class1 
    { 
     public int Class1Variable; 

     public Class1() 
     { 
     } 
    } 
} 

namespace MyProgram 
{ 
    public partial class Form1 : Form 
    { 
     public Class1 c1; 

     public Form1() 
     { 
      InitializeComponent(); 
      c1 = new Class1(); 
     } 

     private void LoadImageButton_Click(object sender, EventArgs e) 
     { 
      //Load image logic 
     } 

     private void ResultButton_Click(object sender, EventArgs e) 
     { 
      c1.Class1Variable = 1; 
     } 
    } 
} 
+0

很抱歉的文本格式。我不知道爲什麼代碼塊沒有格式化,因爲他們應該。如果我有時間後,我會嘗試修復格式。 – Agustin0987

+0

感謝您的好格式不幸運。 – Agustin0987

+0

謝謝。很好的解釋。我會注意到這一點。 –

0

讓我給靜態類添加一個屬性和方法,使其可以理解。讓Class1Program如下所示:

public static class Class1Program 
{ 
    public static int MyProperty{get; set;} // is a static Property 
    public static void DoSomething() // is a static method for performing the action 
    { 
     //my program for image filtering is starting at here 
    } 

} 

現在,您可以訪問Form1像這裏面的方法和屬性:

private void ResultButton_Click(object sender, EventArgs e) 
{ 
    Class1.Class1Program.MyProperty = 20; // assign 20 to MyProperty 
    int myint = Class1.Class1Program.MyProperty; // access value from MyProperty 
    Class1.Class1Program.DoSomething();// calling the method to perform the action 
} 
+0

謝謝先生,我已經嘗試過,並且進展順利。但是現在我遇到了問題,因爲我有太多需要在主靜態方法下聲明的方法。 –