C_Sharp 板


LINE

我使用的是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的部份... 想到输入的资料可能还需要换算与验证...(虚脱) 想问一下,有没有更聪明的方式 可以达成我的需求呢?谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.67.62.81
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1400071263.A.DD7.html
1F:推 Eleganse:无限多的数据对应到无限多的textbox 不就gridview 05/15 11:19
2F:→ Eleganse:只要把textbox宣告在gridview资料列内 05/15 11:20
3F:→ Eleganse:或gridview内已经有开启textbox栏位型态的属性 05/15 11:20
4F:→ Eleganse:如此一来 只要写一列就好 其它数千列gridview自动比照 05/15 11:21
主要是因为资料并不是很有规律 就像以上的例子,有的要用Checkbox,有的要用TextBox,有的要用ComboBox等 对於有规律的资料,我确实是用DataGridView做的
5F:推 Eleganse:你的意思是你的表格内"栏位型态有很多种" 05/15 11:46
6F:→ Eleganse:还是"*同一栏*内有多种不同型态需要个别处理的资料" 05/15 11:46
7F:推 StupidGaGa:gridview也可以有checkbox 05/15 12:05
以上面的例子来说 UI会像这样 http://imgur.com/EPYWpeO.png
相关程式码 http://ideone.com/AAidUU 完整的专案 http://ppt.cc/su8F (google drive空间,以Visual Stuidio 2012建立) 在这个例子里,只有3个byte,显示四笔资料 不过我实际上使用的有上千个byte,显示出来的更多 想不到有没有更聪明的方式来做...
8F:推 StupidGaGa:先问,你的enable跟option的作用是什麽? 05/15 12:45
9F:→ StupidGaGa:另外,你这作法的确是用gridview去处理修改或显示 05/15 12:46
10F:→ StupidGaGa:gridview内的确可以有checkbox跟comboBox 05/15 12:47
Enable对应的是RawData[0]的Bit7 如果Bit7为1,Enable就要打勾 相同的,如果打勾或被取消,Bit7就要对应被设定或取消 Option对应的是RawData[0]的Bit6,Bit5 Bit6 Bit5 0 0 => 选项1 0 1 => 选项2 1 0 => 选项3 1 1 => 选项4 在我上面程式的例子,RawData[0]为0xC0,Bit6=1,Bit5=0,於是对应到选项3 主要是控制项以及RawData需要连动,我不知道有没有比较简易的写法来做 ※ 编辑: james732 (111.67.62.81), 05/15/2014 14:01:08
11F:→ StupidGaGa:1. 你bind的对象要改成gridview 05/15 14:41
12F:→ StupidGaGa:2. gridview跟你储存的data要连动,请参考gird的event 05/15 14:42
13F:→ StupidGaGa:3. 建议鲜血简单的textbox连动,在应用到checkbox等 05/15 14:43
14F:→ StupidGaGa:4. 相关用法或程式码范例请看MSDN或google一定有 05/15 14:44
15F:→ StupidGaGa:另外,你图片范例有误,171应该是0xAB怎麽是0xCD? 05/15 14:48
因为图片里的DecimalData是Bind到RawData[1],0xAB HexData是Bind到RawData[2], 0xCD 如果全部都是Textbox,那我已经有做了 问题是目前混合了CheckBox, ComboBox, TextBox 我不知道有没有比"一格一格加"还要简单的方法可以做到... ┌───────┬─────┐ │Enable │ CheckBox │ ├───────┼─────┤ │Option │ ComboBox │ ├───────┼─────┤ │DecimalData │ TextBox │ ├───────┼─────┤ │HexData │ TextBox │ └───────┴─────┘ ↑如果这里全部都是同一种Control,我已经OK了 但我Google到的资料,如果要不同的Control 似乎要自己一个一个加? ※ 编辑: james732 (111.67.62.81), 05/15/2014 17:16:21







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP