C winForm類似CAD命令的處理方法

2022-09-12 06:06:10 字數 2285 閱讀 7378

仿cad命令實現目標:在窗體中,有一可供使用者輸入命令的文字框te_command,使用者輸入命令後按回車/空格,窗體可以執行相應的方法。

傳統思路是在te_command的keyup事件訂閱器裡使用switch(te_command.text){},但是這種方法當命令多了以後,**的可讀性和可擴充套件性都不是很好,改起來也比較麻煩。

解決思路:

1、建立乙個自定義特性類,用於標識方法對應的命令和功能名稱:

///

///命令處理方法特性

///[attributeusage(attributetargets.method)]

public

class

dchandlerattribute : attribute

//////

對應的功能名稱

/// public

string fcname

//////

預設建構函式

/// ///

命令文字字串陣列

///功能名稱

public dchandlerattribute(string commandtext, string

fcname)

}

自定義命令處理方法特性

2、建立乙個命令功能名稱和委託的類,用於儲存功能名稱和其對應的方法的委託:

///

///命令功能名稱和處理方法委託類

/// public

class

cl_commandhandler

//////

處理方法的委託

/// public action handler

//////

預設建構函式

/// ///

功能名稱

///處理方法的委託

public cl_commandhandler(string

fcname, action handler)

}

命令功能名稱和處理方法委託類

3、在窗體中設定乙個字典

public dictionary commandhandlerdic;
4、建立上述字典,此方法在窗體的建構函式中呼叫。

///

///使用反射技術,自動探測含有特定特性的方法,初始化命令、委託對應字典

/// private

void

initializecommandhandler()

}//包含命令處理特性時

}//遍歷特性

}//包含特性時

}//遍歷所有方法

}

建立字典

5、te_command的鍵抬起處理方法

///

///命令欄keyup事件初始處理方法

/// ///

///private

void te_command_keyup(object

sender, keyeventargs e)

te_command.text=""

; }

//esc鍵

else

if (e.keycode ==keys.escape)

}

命令欄keyup事件初始處理方法

6、這樣以後想增加某個命令時,只需要在方法前加上自定義特性即可:

[dchandler(new

string , "

初始化"

)]

private

void

dch_start()

[dchandler(

newstring , "關閉"

)]

private

void

dch_back()

[dchandler(

newstring , "幫助"

)]

private

void

dch_help()

[dchandler(

newstring , "退出"

)]

private

void

dch_quit()

命令處理方法

構建窗體時,會自動檢查含有自定義特性的方法,然後建立命令字串-委託的字典。當使用者在te_command裡輸入命令後,程式會在字典裡尋找對應的委託來執行。

當然還需要另外乙個顯示命令執**況的文字框。

CAD對齊命令怎麼用?CAD對齊命令應用例項

很多剛開始進行cad入門學習的小夥伴在繪圖過程中,不知道cad對齊命令怎麼用,下面就通過乙個簡單的例項來給大家介紹一下浩辰cad軟體中cad對齊命令的相關應用技巧吧!cad對齊命令 浩辰cad軟體中cad對齊命令 align 簡寫 al 主要用於在二維和三維空間中將物件與其他物件對齊。cad對齊命令...

CAD插入塊命令

可以在圖形中插入塊或其他圖形,在插入的同時還可以改變所插入塊或圖形的比例與旋轉角度。1.單擊選單欄,繪圖 插入塊 2.單擊繪圖工具欄 插入塊命令 按鈕 3.在命令列中輸入insert 按回車鍵。名稱 用於選擇塊或圖形的名稱,使用者也可以單擊其後的 瀏覽 按鈕,開啟 選擇圖形檔案 對話方塊,選擇要插入...

cad裡面f命令用不了 CAD有的命令不能用

關於網上流傳的 cad病毒 特徵為 自動生成 acad.lsp acaddoc.lsp acadap.lsp acad.fas acad.mnl acad.sys lcm.fas cad.fas acad.ini 等檔案 在某時間出現 黨不會虧待你 成功完成複製!無法使用 炸開 直線命令,滑鼠中鍵不...