程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#:WinForm之Command,

C#:WinForm之Command,

編輯:C#入門知識

C#:WinForm之Command,


  本文主要介紹WinForm項目中如何像WPF一樣優雅的使用Command來實現業務操作。想必大家已經疲於雙擊控件生成事件處理方法來實現業務操作,如多控件(按鈕、菜單、工具條、狀態欄等命令控件)來做同一個動作,還要控制它們啟用(Enabled)狀態等等,使代碼結構冗長且可讀性差。下面具體介紹和實現WinForm中對Command的應用。

最後附上委托命令(DegelateCommand)的實現。

1 /// <summary> 2 /// 表示一個可被執行委托的方法的命令。 3 /// </summary> 4 public sealed class DelegateCommand : Command 5 { 6 private Action<object> execute; 7 private Func<object, bool> canExecute; 8 /// <summary> 9 /// 初始化 <see cref="DelegateCommand"/> 新實例。 10 /// </summary> 11 /// <param name="execute">當命令被調用時,指定的方法。</param> 12 /// <param name="canExecute">當命令被確定是否能執行時,執行的方法。</param> 13 public DelegateCommand(Action<object> execute, Func<object, bool> canExecute = null) 14 { 15 this.execute = execute; 16 this.canExecute = canExecute; 17 } 18 /// <summary> 19 /// 定義用於確定此命令是否可以在其當前狀態下執行的方法。 20 /// </summary> 21 /// <param name="parameter">此命令使用的數據。 如果此命令不需要傳遞數據,則該對象可以設置為 null。</param> 22 /// <returns>如果可以執行此命令,則為 true;否則為 false。</returns> 23 public override bool CanExecute(object parameter) 24 { 25 if (canExecute == null) 26 { 27 return true; 28 } 29 return canExecute(parameter); 30 } 31 32 /// <summary> 33 /// 定義在調用此命令時調用的方法。 34 /// </summary> 35 /// <param name="parameter">此命令使用的數據。 如果此命令不需要傳遞數據,則該對象可以設置為 null。</param> 36 public override void Execute(object parameter) 37 { 38 if (CanExecute(parameter)) 39 { 40 execute(parameter); 41 } 42 } 43 } DelegateCommand 代碼

 

   補充:不好意思,忘記附上Demo示例,現補上,請前往 百度網盤 下載

 

  本文如有纰漏,歡迎大家批評指正!                                   

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved