0

我正在开发一个小型 C#-winforms 程序,该程序具有允许用户在运行时添加按钮和不同控件的功能。

我面临的情况如下:

    1)用户添加一个按钮并设置其属性(通过对话框)。
    2)用户添加了另一个控件(也设置了它的属性)。
    3) 用户选择按钮并从菜单条项目中选择绑定。
    4) 将显示一个新对话框,一个下拉菜单将显示所有“其他控件”,另一个下拉菜单将显示(预编码的)功能,用户必须选择其中一个控件和一个将它们绑定到按钮的单击事件的函数。
    5)当用户选择发布他的设计时,会生成一个EXE文件,里面有用户设计的简单程序(还在考虑这一步)

我目前的实现思路:
字典将保存所有按钮及其对应的绑定函数和控件..(Key = buttonID,Value = object 或字典保存函数名称和控件 ID)..

当用户选择“发布”他的设计时,代码会将表单和所有控件构造为 TEXT 并使用字典生成相应的代码按钮,将每个按钮的点击事件连接到相应的函数。

TEXT 还将插入另一个字典,它将每个按钮映射到其绑定控件(每个函数的字典),这将在调用函数以区分按钮不同绑定控件时使用。

TEXT 将被插入到 .cs 文件中,该文件将被编译以生成 EXE(仍在考虑自动化此步骤的方法)。

我觉得这个解决方案太复杂了,可能还有其他更简单的解决方案。

TIA

编辑:
这是一个简单的项目,旨在帮助非程序员创建自己的简单程序,如超市库存或 DVD 商店库。现在它会做简单的计算器工作(1个文本框,几个按钮和加法,减法等功能)。

4

1 回答 1

1

我认为编译将由用户设计的“程序”将是一个糟糕的主意。您可以做的是序列化创建的对象,并将它们写入可以反序列化并加载到程序中的文件以显示用户创建的“程序”。如果所有功能都将被预定义,您可以使用存储在从按钮类扩展的新类中存储的唯一键来指向您希望链接到按钮的功能。您可能希望存储用户可以使用的对象数组,这些对象可以“自定义”,并将其所有 Visible 属性设置为 false 开始。我不确定是否需要对用户创建的程序进行编译,或者是否也可以通过将序列化对象插入其中来将您的程序用作可定制的程序。

该计划的预期目标到底是什么?

我希望我能以某种方式为您的设计带来新的想法。如果您能给我更多信息,我可以尝试制作一些示例代码供您查看。

于 2010-01-09T00:24:25.773 回答