2010-01-08 113 views
0

我正在開發一個小型的C#-winforms程序,它具有允許用戶在運行時添加按鈕和不同控件的功能。實現建議:將一個按鈕(Click事件)綁定到一個函數,並綁定到另一個控件

我對着場景如下:

    1)用戶添加一個按鈕,並設置其屬性(通過對話框)。
    2)用戶添加另一個控件(也設置其屬性)。
    3)用戶選擇按鈕並從菜單條項目中選擇綁定。
    4)一個新的對話框將會顯示,一個DropDown菜單將顯示所有的「其他控件」,另一個DropDown將顯示(預編碼)的功能,用戶必須選擇1個控件和一個函數來將它們綁定到按鈕的點擊事件。
    5)當用戶選擇釋放他的設計,一個EXE文件生成,將有簡單的程序的用戶設計的(還在想着這一步了)

我當前實現的想法:
的字典會(鍵=按鈕ID,值=對象或字典保存功能名稱和控制ID)。

當用戶選擇「發佈」他的設計時,代碼將會保留所有按鈕及其相應的綁定功能和控件。將表單和所有控件構造爲TEXT,並使用字典生成適當的代碼按鈕,將每個按鈕的click事件連接到相應的Function。

TEXT還會插入其他字典,將每個按鈕映射到其綁定控件(每個函數的字典),這將在函數被調用以區分按鈕不同的綁定控件時使用。

TEXT將被插入到一個.cs文件中,該文件將被編譯生成EXE(仍然在考慮如何自動執行此步驟)。

我覺得這個解決方案過於複雜,可能還有其他更簡單的解決方案。

TIA

編輯:
這是一個簡單的項目,旨在幫助非程序員創建自己的簡單程序,如超市庫存或DVD-店庫。 現在它將執行簡單的計算器作業(1個文本框,幾個按鈕以及ADD,Subtract等功能)。

回答

1

我認爲編譯將由用戶設計的「程序」將是一個可怕的想法。 你可以做的是序列化所創建的對象,並將它們寫入一個可以反序列化並加載到程序中的文件,以顯示用戶創建的「程序」。 如果所有的函數都是預定義的,你可以使用一個唯一的Key存儲在一個從Button類擴展的新類中,以指向你想要鏈接到該按鈕的函數。 您可能想要存儲用戶可以使用的對象數組,可以將其「可定製」的所有對象的可見屬性設置爲false以開始使用。 我不知道是否需要編譯用戶創建的程序,或者如果通過將序列化對象插入到程序中也可以將程序用作可定製程序。

該程序的期望目標究竟是什麼?

我希望我能以某種方式爲您的設計帶來新想法。 如果你可以給我更多的信息,我可以嘗試做一些示例代碼供你看看。

+0

感謝您的想法,我增加了關於程序本身的更多細節。 – 2010-01-09 00:35:59

+0

我正在編譯用戶代碼,使得生成的EXE可移植到其他PC上,同時序列化用戶的設計也作爲一個選項發生在我身上,但是,由於他可以創建多個設計到Release,因此序列化更適合於保存/打開特徵。 – 2010-01-09 00:49:30

+0

完整的文件結構如何。例如 稱爲用戶程序中名爲「Calc」的所有序列化對象存儲在Calc /中。序列化對象存儲在那裏。 這將允許進行超過1個設計,並允許2個「按鈕1」存在於相同的空間而不會覆蓋彼此。 然後將一個單獨的文本文件與您想要程序加載的目錄名稱放在根目錄中。 – Skintkingle 2010-01-09 14:57:22

相關問題