KyKiske22 2015-05-27 07:28 采纳率: 0%
浏览 3361

关于在C# Winform中的方法事件中使用大量if-else问题

winform运行比较顺利,但if-else代码太多 诸如如下情况
实现功能按钮:private void Button_Click(object sender,EventArgs e)
{
if ( listBox1.SelectedIndex==0)
{ a = int.Parse(DataText.Text);listBox1.SelectedIndex = 0; listBox1.Items[0] = "a的值为" + a + " 。"}
else if ( listBox1.SelectedIndex==1)
{ b = int.Parse(DataText.Text);listBox1.SelectedIndex = 1; listBox1.Items[1] = "b的值为" + b + " 。"}
else if ( listBox1.SelectedIndex==2)
{ c = int.Parse(DataText.Text);listBox1.SelectedIndex = 2; listBox1.Items[2] = "c的值为" +c+ " 。"}
...............
}
一共这里有100多个if-else

还有一个滚动条显示数据按钮 也是如此(这个有转换算法)
private void hScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
if(richBox1.Text=="a的最大值为100,最小值为0")
{
int data1 = (int)hScrollBar1.Value;int data2 = data1 * 5;TextBox1.Text = data2.ToString();
}
else if(richBox1.Text=="b的最大值为100,最小值为0")
{
int data1 = (int)hScrollBar1.Value;int data2 = data1 /10;TextBox1.Text = data2.ToString();
}
......一共也是100多个

但这样写代码比较冗长。之前看过张子阳的委托,最后还是无法实现要求(看了改写后总是显示最后一个程序)。也用面向对象的建立接口多态写法也写过,但因为控件太多,导致new的对象太多,程序经常卡壳。求大神指点。。。或者给予一个正确的面向对象写法(在控制台里就写成功过,但是在winform里一次也没用面向对象法解决这个问题)。(づ。◕‿‿◕。)づ

  • 写回答

4条回答 默认 最新

  • 全栈极简 博客专家认证 2015-05-27 07:34
    关注

    找规律啊,if表达式跟里面要执行的代码有什么关系?或者从设计上面避免这种情况的发生。

    评论

报告相同问题?

悬赏问题

  • ¥30 求给定范围的全体素数p的(p-2)的连乘积
  • ¥15 VFP如何使用阿里TTS实现文字转语音?
  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页