我在表单中有几个文本框。我写了很多代码并将它们存储在数据库中:
Textbox1.Location = New System.Drawing.Point(609, 3)
Textbox2.Location = New System.Drawing.Point(659, 3)
Textbox1.BackColor = System.Drawing.Color.Green
Textbox2.BackColor = System.Drawing.Color.Blue
TextboxX.AnyProperty = PropertyValue
在数据库中编写代码的原因是,如果用户想要在特定位置使用文本框或想要更改文本框的任何属性,我们的程序员将更改该文本框的数据库中的代码,而不是重新编译软件。
有没有办法从数据库执行这些代码来相应地更改文本框的属性?
答案 0 :(得分:1)
您需要序列化(xml或二进制)并将值存储到数据库,然后在表单的OnCreate事件处理程序中读取数据库中的值并使用Reflection
相应地设置它们。
让我们看一下数据库表的结构
这是我的建议
Create table FormData
(ID int,
FormFullTypeName varchar(500),
ControlName varchar(500),
PropertyName varchar(100),
Value varchar(max))
在表单的OnCreate
中根据表单的完整类型名称查询此表,然后遍历记录并找到特定的Control
,然后通过{{1}查找对应的Property
然后反序列化该值,并通过Reflection
再次将值设置为Property。
例如,我假设您已从db
设置此变量Reflection
实现findControlByName看看这个链接 Get a Windows Forms control by name in C#
我希望这有助于你