C# 缩短“的代码”;“如果,否则”;功能
我有一个最大值为“9”的滑块。每个值都应改变标签的文本。 我现在只能想到这个方法:C# 缩短“的代码”;“如果,否则”;功能,c#,C#,我有一个最大值为“9”的滑块。每个值都应改变标签的文本。 我现在只能想到这个方法: private void Slider_Scroll(object sender, EventArgs e) { if (Slider.Value == 0) { Label.Text = "Text1"; } else if (Slider.Value == 1) { Label.Text = "Te
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...
}
是否有一种方法可以用较短的方式完成此操作?使用
开关…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;
}
或;使用字典:
static readonly Dictionary<int,string> labels = new Dictionary<int,string> {
{0, "Text1"},
{1, "Text2"}
};
如果需要在运行时根据配置查找文本(即,它们不是硬编码的),字典方法尤其有用
如果值是连续整数(0到9等),则还可以使用字符串[]
Label.Text=“Text”+(1+Slider.Value)。ToString()
如果其为nt,则默认值始终为:
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..
}
static reaonly Dictionary labelMap=新字典{
{0,“Text1”},{1,“Text2”},{1,“TextValue3”}
};
if(labelMap.ContainsKey(Slider.Value))
{
Label.Text=string.Format(“Text{0}”,labelMap[Slider.Value]);
}
其他的
{
Label.Text=;//或引发异常等。。
}
扩展滑块并向其添加名称属性
Label.Text = Slider.Name;
为什么不定义一个值数组并直接索引到这个数组中呢
private String[] values = new String[9] {"Value1", "Value2", ... , "Value9"};
private void Slider_Scroll(object sender, EventArgs e)
{
Label.Text = values[Slider.value];
}
您可以使用列表
并使用滑块对其进行索引。值
:
List<string> list = new List<string>() { "Text1", "Text2", ... , "TextN" };
Label.Text = list[Slider.Value];
List List=newlist();
Label.Text=list[Slider.Value]代码>我会使用数组:
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 ];
}
}
string滑块标签[]={“Text1”
,“文本2”
,“Text3”
,“Text4”
,“文本5”
,“Text6”
,“文本7”
,“Text8”
,“Text9”};
私有无效滑块\u滚动(对象发送器、事件参数e)
{
if(Slider.Value
请原谅打字错误或小的语法错误,我手头没有我的VS
嗯
马里奥你试过切换语句吗?没有。正如我所说,我当时只能想到所展示的方法。我对C#还是相当陌生。虽然我只是举了个例子,但这并不是我想要的。实际上我想把文本中的每一个值都改成其他值。我认为“文本”+数字只是概念,真正的字符串是其他值。如果不是,你的答案可能是最好的:)这是一个非常好的解决方案,现在就用这个。谢谢你的快速回答!
private String[] values = new String[9] {"Value1", "Value2", ... , "Value9"};
private void Slider_Scroll(object sender, EventArgs e)
{
Label.Text = values[Slider.value];
}
List<string> list = new List<string>() { "Text1", "Text2", ... , "TextN" };
Label.Text = list[Slider.Value];
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 ];
}
}