![](/img/trans.png)
[英]How can I fix the form size in a C# Windows Forms application and not to let user change its size?
[英]Let the user design a form and the fields in it
我正在開發一個應用程序,我希望用戶可以在其中設計一些表單並確定表單中的字段。
一個示例比一個糟糕的解釋要好,所以讓我舉一個Microsoft CRM的示例,在該示例中,您作為最終用戶可以定義表單,該表單中的字段,或者通過添加或刪除字段來自定義現有表單。
有一些標准的方法嗎?,有人知道要使用的組件嗎? 或以類似的功能工作?
任何看跌將不勝感激。
這不是一件容易的事,並且有成千上萬種方法可以實現這一目標。 這取決於許多因素-例如,您的用戶是否能夠“發布”其創建的表單,用戶是否可以更新其表單(表單和數據版本管理問題中的攜帶),您是否會提供視覺設計師,是否會提供聲明性設計語言,您要如何存儲填充到表單中的數據,是用戶從有限的一組可用字段中拉出的字段,還是用戶可以發明全新的字段等?
本質上,在一個完整的電子表單程序包中,您將創建用於表單創建的可視IDE,以及一個“編譯器”,該編譯器將生成可填充的,運行時的用戶表單實現。 為了使系統有用,您還必須包括管理功能(搜索,歸檔,導入,導出等)。
如果您不想自己解決這些問題,可以使用許多eforms軟件包。 費用從免費到數萬美元不等。
這是一個非常復雜的問題,我將首先將其簡化為一個更簡單的用例,然后給出一種可能的設計方法。
使用案例:
設計:
我認為,最好的開始方法是構建一個可分析標准html表單並在您的應用程序中創建和對象的軟件。 然后,這將由您的GUI顯示。 一旦您可以解析html表單,便知道您具有所需的字段並具有顯示它們的功能,現在您只需要創建一個gui即可允許用戶向表單對象添加元素。
話雖如此,這不是一個簡單的任務。 這種功能有很多優點,很多缺點,很多。
我建議您創建一個表單布局生成器,該表單生成器將輸入要顯示的列以及用於編輯它們的控件類型。 然后,它應該以整齊的方式排列列(利用流面板或類似的東西)。 在數據庫中動態創建列很容易。 然后,用戶可以在網格中或類似的東西中特定化他們想要編輯的列,然后布局引擎從用戶特定化的列中創建表單。 與完全免費的gui設計師(例如Visual Studio本身)相比,這當然限制了可能性,但同時也會使表格看起來井井有條且對齊良好。 因此,總的來說,這是一個很好的折衷,並且比一個完整的gui設計師更容易實現。
在我當前的項目中,我們讓用戶通過存儲每個用戶的配置來自定義他們想要在搜索表單和結果網格中看到的字段。 例如,用戶A希望在表格X上看到P,Q,R,每個控件都有一個ID,並且配置值由ID存儲。 可能不是很優雅,但是可以進行較小的自定義。
眾所周知,這非常困難,所以讓我們看看標准。 組成表單的標准是HTML。 那么你:
讓用戶使用html或任何HTML設計器創建表單/字段。
將IE嵌入您的應用程序以呈現html。
在他們的機器上旋轉某種小型的Web服務器,該服務器僅接受來自此Form和此Form的請求(我認為ASP MVC中的某些功能會在此處有所幫助)
當他們提交表單時,解析“請求發布”以查看字段和值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.