[问题] 大量变量对应至大量Control

楼主: james732 (好人超)   2014-05-14 20:41:01
我使用的是C#写Winform视窗程式
目前做的事情是把档案里的资料读出来
对应到form上的控件
譬如:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct Setting
{
public byte control;
public byte data1;
public byte data2;
}
control bit7 => Checkbox
control bit6, bit5 => shift变成0,1,2,3之后控制 Combobox
data1 => Textbox (十进制显示)
data2 => Textbox (十六进制显示)
档案读出来的东西,能够显示在控件上
然后控件如果被修改,也要能够写回档案
我目前用databind的方式来写,已经初步可以用
简单的程式如下:
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct Setting
{
public byte control;
public byte data1;
public byte data2;
public bool IsEnable
{
get
{
return (control & 0x80) == 0 ? false : true
}
}
public int Option
{
get
{
return (control & 0x60) >> 5;
}
}
public int DecimalData
{
get
{
return data1;
}
}
public string HexData
{
get
{
return data2.ToString("X02");
}
}
void InitUi()
{
checkboxIsEnable.DataBindings.Add("checked", myobj, "IsEnable");
comboBoxOption.DataBindings.Add("SelectedIndex", myobj, "Option");
textBoxDecData.DataBindings.Add("Text", myobj, "DecimalData");
textBoxHexData.DataBindings.Add("Text", myobj, "HexData");
}
}
class MyForm : Form
{
void InitUi(byte[] rawData)
{
Setting myobj = Marshal.PtrToStructure(....);
checkboxIsEnable.DataBindings.Add("checked", myobj, "IsEnable");
comboBoxOption.DataBindings.Add("SelectedIndex", myobj, "Option");
textBoxDecData.DataBindings.Add("Text", myobj, "DecimalData");
textBoxHexData.DataBindings.Add("Text", myobj, "HexData");
}
}
但是目前我的资料有很多很多 (上千笔)
一笔一笔的加propert实在很累
而且我还没写set的部份...
想到输入的资料可能还需要换算与验证...(虚脱)
想问一下,有没有更聪明的方式
可以达成我的需求呢?谢谢
作者: Eleganse (艾勒更斯)   2014-05-15 11:19:00
无限多的数据对应到无限多的textbox 不就gridview只要把textbox宣告在gridview资料列内或gridview内已经有开启textbox字段型态的属性如此一来 只要写一列就好 其它数千列gridview自动比照你的意思是你的表格内"字段型态有很多种"还是"*同一栏*内有多种不同型态需要个别处理的资料"
作者: StupidGaGa (笨嘎嘎)   2014-05-15 12:05:00
gridview也可以有checkbox先问,你的enable跟option的作用是什么?另外,你这作法的确是用gridview去处理修改或显示gridview内的确可以有checkbox跟comboBox1. 你bind的对象要改成gridview2. gridview跟你储存的data要连动,请参考gird的event3. 建议鲜血简单的textbox连动,在应用到checkbox等4. 相关用法或程式码范例请看MSDN或google一定有另外,你图片范例有误,171应该是0xAB怎么是0xCD?

Links booklink

Contact Us: admin [ a t ] ucptt.com