我有一个最大值为“9”的滑块。每个值都应更改标签的文本。 我现在只能想到这种方法:
private void Slider_Scroll(object sender, EventArgs e)
{
if (Slider.Value == 0)
{
Label.Text = "Text1";
}
else if (Slider.Value == 1)
{
Label.Text = "Text2";
}
//...and so on...
}
有没有一种方法可以用更短的方式做到这一点?
答案 0 :(得分:12)
switch(Slider.Value) {
case 0: Label.Text = "Text1"; break;
case 1: Label.Text = "Text2"; break;
}
或;使用字典:
static readonly Dictionary<int,string> labels = new Dictionary<int,string> {
{0, "Text1"},
{1, "Text2"}
};
和
string text;
if(labels.TryGetValue(Slider.Value, out text)) {
Label.Text = text;
}
如果您需要在运行时根据配置查找文本(即它们不是硬编码的),字典方法特别有用。
如果您的值是连续的整数(0到9等),您也可以使用string[]
。
答案 1 :(得分:3)
为什么不定义一个值数组而只是索引到这个数组?
private String[] values = new String[9] {"Value1", "Value2", ... , "Value9"};
private void Slider_Scroll(object sender, EventArgs e)
{
Label.Text = values[Slider.value];
}
答案 2 :(得分:2)
扩展滑块并为其添加Name属性。
Label.Text = Slider.Name;
答案 3 :(得分:0)
使用Switch...Case
代替if..else
。
private void Slider_Scroll(object sender, EventArgs e)
{
var text = string.Empty;
Switch(Slider.Value)
{
case 0:
text = "text1";
break;
case 1:
text = "text2";
break;
//....go on
}
Label.Text = text;
}
答案 4 :(得分:0)
Label.Text = "Text" + (1 + Slider.Value).ToString()
答案 5 :(得分:0)
Label.Text = string.Format("Text{0}",Slider.Value+1);
如果它的默认值始终为:
static reaonly Dictionary<int,string> labelMap = new Dictionary<int,string> {
{0, "Text1"}, {1, "Text2"}, {1, "TextValue3"}
};
if(labelMap.ContainsKey(Slider.Value))
{
Label.Text = string.Format("Text{0}",labelMap [Slider.Value]);
}
else
{
Label.Text=<defaut_value>; //or throw exception etc..
}
答案 6 :(得分:0)
您可以使用List<string>
并使用Slider.Value
索引它:
List<string> list = new List<string>() { "Text1", "Text2", ... , "TextN" };
Label.Text = list[Slider.Value];
答案 7 :(得分:0)
我会使用数组:
string SliderLabels[] = {"Text1"
, "Text2"
, "Text3"
, "Text4"
, "Text5"
, "Text6"
, "Text7"
, "Text8"
, "Text9"};
private void Slider_Scroll(object sender, EventArgs e)
{
if ( Slider.Value < SliderLables.length )
{
Label.Text = SliderLabels[ SliderValue ];
}
}
请原谅错别字或小语法错误,我手边没有VS.
HTH
马里奥