我有一个数据类(简化)
public class Transport
{
public int TransId;
public string TType;
public string Color;
public string Size;
}
Transport t1 = new Transport();
populate(t1)
我在Windows窗体上填充文本框控件。我的文本框具有相同的名称(TransId, TType, Color, Size
)。还有更多,所以我要做的是使用文本框的名称来访问数据。像......那样......
foreach (TextBox tb in this.Controls.OfType<TextBox>())
{
tb.Text = t1.(tb.Name);
}
这可能吗?这是一个好主意还是我应该坚持TransId.Text = t1.TransId
等?
答案 0 :(得分:3)
我建议您手动为控件分配属性值(特别是如果只想显示值)或使用数据绑定将类属性绑定到控件:
Text
绑定,请选择添加项目数据源... 选项Transport
类型这会将transportBindingSource
添加到您的应用中。现在,您可以选择每个TextBox并将其绑定到Transport
对象中的一个属性:
现在您只需要将Transport
实例添加到绑定源:
private Transport transport;
public Form1()
{
InitializeComponent();
transport = new Transport {
TransId = 42,
Color = "White",
Size = "Big"
// ...
};
transportBindingSource.Add(transport);
}
结果:
绑定的好处是它可以双向工作 - 当您在TextBox中编辑值时,将更新传输对象属性。
注意:如果您只想显示对象的所有属性的值,请考虑使用PropertyGrid
:
propertyGrid.SelectedObject = transport;