C# 简化优化if/switch 表驱动法
2024-09-15 12:48:14
表示这个很强大
字典加反射,搞定多window的switch
public partial class MainWindow : Window
{
Dictionary<string, Type> WindowList = new Dictionary<string, Type>();
public MainWindow()
{
InitializeComponent();
this.AddHandler(Button.ClickEvent, new RoutedEventHandler(Btn_Click));
LoadDic();
} void LoadDic()
{
Type decoratorType = typeof(DecoratorWindow);
Type viewboxType = typeof(ViewboxWindow);
Type valueType = typeof(ValueWindow);
Type lineType = typeof(LineWindow);
Type winStartType = typeof(WinStartWindow);
Type mp3Type = typeof(Mp3Window);
Type socketType = typeof(SocketWindow);
Type tagType = typeof(TagWindow);
Type txtType = typeof(TXTWindow);
Type QQType = typeof(QQWindow);
Type transformType = typeof(TransformWindow);
Type image3DWallType = typeof(Image3DWallWindow);
Type transType = typeof(TransWindow);
Type weatherType = typeof(WeatherWindow);
Type datagridType = typeof(DatagridWindow);
Type versionType = typeof(VersionWindow);
WindowList.Add("Decorator", decoratorType);
WindowList.Add("Viewbox", viewboxType);
WindowList.Add("Value", valueType);
WindowList.Add("Line", lineType);
WindowList.Add("WinStart", winStartType);
WindowList.Add("Mp3", mp3Type);
WindowList.Add("Socket", socketType);
WindowList.Add("Tag", tagType);
WindowList.Add("TXT", txtType);
WindowList.Add("QQ", QQType);
WindowList.Add("Transform", transformType);
WindowList.Add("Image3DWall", image3DWallType);
WindowList.Add("Trans", transType);
WindowList.Add("Weather", weatherType);
WindowList.Add("Datagrid", datagridType);
WindowList.Add("Version", versionType);
}
private void Btn_Click(object sender, RoutedEventArgs e)
{
Window window = (Window) Activator.CreateInstance(WindowList[(e.OriginalSource as Button).Tag.ToString()]);
window.ShowDialog();
}
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.AddHandler(Button.ClickEvent,new RoutedEventHandler(Button_Click));
} private void Button_Click(object sender, RoutedEventArgs e)
{
if ((e.OriginalSource as Button).Tag.ToString() == null) ;
else
{
Window window = WindowList[(e.OriginalSource as Button).Tag.ToString()];
switch ((e.OriginalSource as Button).Tag.ToString())
{
case "Decorator":
window = new DecoratorWindow();
break;
case "Viewbox":
window = new ViewboxWindow();
break;
case "Value":
window = new ValueWindow();
break;
case "Line":
window = new LineWindow();
break;
case "WinStart":
window = new WinStartWindow();
break;
case "Mp3":
window = new Mp3Window();
break;
case "Socket":
window = new SocketWindow();
break;
case "Tag":
window = new TagWindow();
break;
case "TXT":
window = new TXTWindow();
break;
case "QQ":
window = new QQWindow();
break;
case "Transform":
window = new TransformWindow();
break;
case "Image3DWall":
window = new Image3DWallWindow();
break;
case "Trans":
window Trans = new TransWindow();
break;
case "Weather":
window = new WeatherWindow();
break;
case "Datagrid":
window = new DatagridWindow();
break;
default:
break;
}
window.ShowDialog();
}
}
}
}
最新文章
- UICollectionViewCell定制Button
- WPF/Silverlight 下的图片局部放大
- PHP基础OOP(一)
- Apple Watch已向微信开放WatchKit接口?
- C++开源代码覆盖率工具OpenCppCoverage介绍(Windows)
- 克隆选择算法-python实现
- Oracle- UPDATE FROM讲解
- JAVA 跑马灯文字效果
- umount: /home: device is busy
- 洛谷 U4704 函数
- Problem D: 栈小游戏
- mysqldump 备份导出数据排除某张表
- Dynamic Rankings ZOJ - 2112(主席树+树状数组)
- Mybatis 源码简述
- 解决多人开发时使用window.onload的覆盖问题
- [转帖]Mysql 开启跟踪的一个方法
- oracle用sql 语句如何向表中插入时间?
- 20145335郝昊《java程序设计》第9周学习总结
- Andrew Ng机器学习编程作业:Support Vector Machines
- Maven导入jar包
热门文章
- 基于visual Studio2013解决面试题之0309左移递减序列搜索
- cocos2d-x学习日志(10) --射击游戏(喵星战争)
- ios点击产生波纹效果
- ym——安卓巴士总结了近百个Android优秀开源项
- Coins (poj 1742 &;amp;&;amp; hdu 2844 DP)
- 关于PHP的内置服务器的使用
- 使用Seam Framework + JBoss 5.0 开发第一个Web应用 - 简单投票程序
- (读书笔记).NET大局观-.NET语言(1)
- 开玩笑Web它servlet(五岁以下儿童)---- 如何解决servlet线程安全问题
- FZU2179(数位dp)