2015-07-01 93 views
-3

所以我想創建一個包含一些文本,從一個文本框獲取數據裏面還有一個變量的字符串變量:當如何正確地處理可變

 string var1, var2; 

     var1 = txt1.text; 
     var2 = "some text" + var1 + "some text"; 

這是不是這麼難我試試它的按鈕事件中,但VAR2將被經常使用在我的程序,它有大量的文字裏。如果可能的話我希望儘量減少所需要的每一個事件遍地聲明變量。我會想象它會更容易,如果這可能發生:

string var1 = TextBox.Text; 
    string var2 = "a lot of text" + var1 + "a lot of text"; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     rtextbox.Text = "a lot of text" + var2; 
    } 

VAR2將被用作簽名,所以我需要訪問它了很多次。如果有更簡單的方法,那麼我願意接受建議。

當使用上述代碼聲明變量時,我沒有得到文本框的智能感知,所以我得到一個錯誤。我需要幫助,以便我可以像上面所示的方式聲明變量。我正在使用vs2010。如果使用更高版本會有所幫助,那麼我會嘗試一下。我只觸及c#編程的表面,所以你看到的任何可能不準確的東西都不是這個意思。

+2

「我讀的是C#,當涉及到全局變量是不是很友好。」 - 你的意思是「C#開發人員傾向於不使用全局變量,因爲全局狀態很難管理,測試和推理」?說實話,你的整個問題很難理解...... –

+0

基本上,你已經在你的問題中寫下了問題和答案,你似乎對此感到困惑。 –

+0

明確拖動.. :) –

回答

0

我認爲當你在文本框更改值並調用var2之後,你希望看到值。您可以使用函數將其返回,例如

private string GetFormattedTextBoxValue() 
{ 
    string var1 = TextBox.Text; 
    string var2 = "a lot of text" + var1 + "a lot of text"; 
    return var2; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    rtextbox.Text = "a lot of text" + GetFormattedTextBoxValue(); 
} 

,或者如果你想重用的邏輯,你可以通過在文本框中:

private string GetFormattedTextBoxValue(System.Windows.Forms.TextBox textbox) 
{ 
    string var1 = textbox.Text; 
    string var2 = "a lot of text" + var1 + "a lot of text"; 
    return var2; 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    rtextbox.Text = "a lot of text" + GetFormattedTextBoxValue(TextBox1); 
} 

,或者如果它總是相同的文本框,你可以把它的屬性,你不需要括號

private string FormattedTextBoxValue 
{ 
    get 
    { 
    string var1 = TextBox.Text; 
    string var2 = "a lot of text" + var1 + "a lot of text"; 
    return var2; 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    rtextbox.Text = "a lot of text" + FormattedTextBoxValue; 
} 

然後你就可以擺脫臨時變量:

private string FormattedTextBoxValue 
{ 
    get 
    { 
    return "a lot of text" + TextBox.Text + "a lot of text"; 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    rtextbox.Text = "a lot of text" + FormattedTextBoxValue; 
} 
+0

感謝您的建議CompuChip ..將檢查了這一點,讓你知道。 – cSharpNoob

+0

經過測試和工作。這是一個關於如何做我所問的完整指南。感謝CompuChip,現在我對函數有了更好的理解。 – cSharpNoob

0

你可以聲明變量在一個地方是這樣的:

public static string var1, var2; 

然後你就可以用classname.var1,其中類名是你宣佈VAR1類使用它。類似於您想要什麼

+0

我會給這個鏡頭..我會嘗試這個後會回來。 – cSharpNoob

0

東西:

不推薦

public static class GlobalVariables{ 
    public static string Var2 {get;set;} 
} 
0

這不是從你的問題清楚,你是否想用你的VAR2在所有形式或單一form.Ifü要在所有的形式使用它,然後更好地聲明靜態類這樣

static class GlobalClass 
{ 
    private static string var2 = ""; 

    public static string Var2 
    { 
     get { return var2; } 
     set { var2 = value; } 
    } 
} 

而且使用這樣的

GlobalClass.Var2 = "any string value"; 
+0

謝謝你的建議shreesha。將檢查這一點,讓你知道發生了什麼。 – cSharpNoob