日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

传递类型为参数的方法

發布時間:2025/3/20 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 传递类型为参数的方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳遞類型為參數的方法

?

今天在寫程序時發現要實現一個功能,就是需要一個樹,然后當雙擊樹的節點時彈出一個窗口。

這個看起來很簡單,但是每個節點對應的窗口都不一樣,如果窗口很多的話,需要寫的代碼就比較多。

后來想了一下,覺得可以把窗口相關的參數放到節點的tag屬性中。最先想到的是放窗體類的名稱,不過還要使用反射什么的,我不太喜歡,而且一不小心就寫錯類名了;類似的還有使用switch開關語句,在雙擊的時候根據類名或者其他枚舉的方法判斷打開的窗口,不過也比較麻煩;再然后就想能不能用委托實現,但是想了一下如果用委托的話還是需要把每個打開窗口的方法都寫出來,也需要寫很多代碼。因為我比較胖,人也比較懶,對這些方法都不滿意,最后就想能不能在tag里直接存在窗體類型呢?然后直接實例化該類型,得到窗口對象,直接打開就完了,經過一試果然可以:

?

?
?1? /// <summary>
?2???????? /// 主窗體加載事件,把需要打開的報表窗體都加進來
?3???????? /// </summary>
?4???????? /// <param name="sender"></param>
?5???????? /// <param name="e"></param>
?6???????? private void FrmMainLoad(object sender, EventArgs e)
?7???????? {
?8???????????? TreeNode root = new TreeNode("報表演示");
?9???????????? tvMain.Nodes.Add(root);
10
11???????????? TreeNode newNode = new TreeNode("表格報表");
12???????????? newNode.Tag = typeof(FrmTableReport);
13???????????? root.Nodes.Add(newNode);
14
15???????????? newNode = new TreeNode("分組報表");
16???????????? newNode.Tag = typeof(FrmGroupReport);
17???????????? root.Nodes.Add(newNode);
18????????????
19???????? }
20
21???????? /// <summary>
22???????? /// 雙擊樹節點事件
23???????? /// </summary>
24???????? /// <param name="sender"></param>
25???????? /// <param name="e"></param>
26???????? private void TvMainNodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
27???????? {
28???????????? if (e.Node != null && e.Node.Tag != null)
29???????????? {
30???????????????? ShowTaleReport(e.Node.Tag as Type);
31???????????? }
32???????? }
33
34???????? /// <summary>
35???????? /// 打開類型指定的窗體
36???????? /// </summary>
37???????? /// <param name="type"></param>
38???????? private void ShowTaleReport(Type type)
39???????? {
40???????????? Form report = type.GetConstructor(System.Type.EmptyTypes).Invoke(new object[0]) as Form;
41???????????? if (report == null) return;
42???????????? report.MdiParent = this;
43???????????? report.WindowState = FormWindowState.Maximized;
44???????????? report.Show();
45???????? }
通過這種方式,我每增加一個需要管理的報表窗體,只需要在formlaod事件里加上三行代碼就完了。
呵呵,夠簡單了。

?

?

http://www.cnblogs.com/taxhaven/articles/1725169.html

總結

以上是生活随笔為你收集整理的传递类型为参数的方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。