2011-10-24 92 views
0

我想创建一个使用另一个变量的函数外部的变量,就像这样:使用函数C#外部的变量

private void tb_TextChanged(object sender, TextChangedEventArgs e) 
{ 
    ... 
} 

TextStyle txtstyle = new TextStyle(new SolidBrush(Color.Red), null, FontStyle.Regular); // the variable 

private void tb_VisibleRangeChangedDelayed(object sender, EventArgs e) 
{ 
    ... 
} 

我想用一个自定义颜色,以取代Color.Red在txtstyle这在应用程序设置中。我怎样才能做到这一点?

+1

你为什么想要它做这样?你不能声明变量并用你想要的值在构造函数中初始化它吗? –

+0

为什么你提供了两种方法?你想在一次或每次函数调用中改变文本样式? – sll

+0

我刚刚提供了显示变量不在其中的方法。 – david

回答

1

您可以通过这种方式访问​​设置:

TextStyle txtstyle = new TextStyle(new SolidBrush(Properties.Settings.Default["Color"]), null, FontStyle.Regular); // the variable 
+0

正是我想要的,也很简单。 – david

2

由于您在类作用域中声明了txtstyle,因此可以从属于同一类的一部分的函数内访问它。我建议你阅读C# scoping rules

+0

**我想替换txtstyle中的Color.Red ... **似乎缺少 – V4Vendetta

+0

@ V4Vendetta - 嗯。什么? – Oded

+0

我以为他问的是如何从应用程序设置中替换颜色 – V4Vendetta

4

我想创建一个私有财产是这样的:

private TextStyle myTextStyle 
    { 
     get 
     { 
      var colorName = "Red"; 

      if(!string.IsNullOrWhiteSpace(ConfigurationManager.AppSettings["myColor"])) 
      { 
       colorName = ConfigurationManager.AppSettings["myColor"]; 
      } 

      return new TextStyle(new SolidBrush(Color.FromName(colorName)), null, FontStyle.Regular); 
     } 
    } 

必须添加到System.Configuration参考这个工作。

+1

花了我一段时间来充分理解他提出的问题,但从我所知道的情况来看,这正是他所期待的。 –

+0

是的,但是由于Fischermaen发布的代码更短,所以我使用他的代码。 – david