2012-04-15 55 views
-1

我一直陷在一個簡單的問題。我無法刪除它。C#簡單的GUI面板

我已將面板更改爲靜態公共。訪問跨頁面板。當我改變GUI時,它將靜態公衆重置爲公共。並給我一個錯誤。你不能在這裏訪問公共會員。

所以我必須設置靜態每當我改變了一點點的圖形用戶界面來運行程序。

請幫我。

我知道這是一個垃圾問題。我很想知道反手所發生的事情。

我正在使用visual studio 2011.開發人員預覽。

+2

這種操作的目標是什麼? – 2012-04-15 15:01:18

+5

你使用的是什麼GUI庫?的WinForms? WPF? ASP.NET?地鐵? – svick 2012-04-15 15:01:20

+0

我使用Windows窗體。 – 2012-04-15 16:08:10

回答

1

我假設你正在使用WinForms。

不要更改由Microsoft Visual Studio生成的自動生成的代碼,它只會在您更改某些內容時被覆蓋。請在後面的代碼中使用static

例如一個按鈕,單擊時會更改變量。

public static int MyGlobalVariable 
private void button1_Clicked(object sender, EventArgs e) 
{ 
    MyGlobalVariable = 4; 
} 

另外考慮一個完全不同的設計,因爲遲早會使用公共靜力學會引起很多頭痛。通常更快。

+0

static public System.Windows.Forms.Panel程序;這是我聲明 – 2012-04-15 16:11:12

+0

是的,明白了。你使用這個表單是另一個地方,因爲它需要是靜態的 - 代碼是怎麼樣的?請編輯你的問題。 – vidstige 2012-04-15 16:56:31

+0

謝謝。我有另一種方式來做到這一點。但我想以這種方式做到這一點。希望你明白我想要做什麼。其實我試圖用一種形式輕鬆地將面板聲明爲另一種形式。我不想做一個功能或通過面板對象的保護。只是想以正常的方式使用。所以只需要知道視覺工作室試圖做出的背景變化。應該。也想知道,這是一個好方法。 – 2012-04-15 17:15:23

0

不知道我理解正確你的問題(你是什麼意思是「當過我改變了GUI」?),但也許這是你在找什麼:

public partial class Form1 : Form 
{ 
    public static Panel panelS = new Panel(); 

    public Form1() 
    { 
     InitializeComponent(); 
    } 
} 

和:

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
     Form1.panelS.Location = new Point(100, 100); 
    } 
} 
+0

在Form2的構造函數中沒有引用Form1並在Form2的構造函數中實例化它會破壞目的。您需要將Form1的引用傳遞給Form2 .. – 2012-04-16 04:38:50

+0

nope,panelS字段是靜態的。 – vidstige 2012-04-16 05:20:38