2015-07-01 60 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