我使用的是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的部份...
想到輸入的資料可能還需要換算與驗證...(虛脫)
想問一下,有沒有更聰明的方式
可以達成我的需求呢?謝謝