[問題] 大量變數對應至大量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