Re: [問題] 大量變數對應至大量Control

作者: StupidGaGa (笨嘎嘎)   2014-05-15 20:21:00
※ 引述《james732 (好人超)》之銘言:
: 首先要謝謝您的回覆,我想是我沒有說清楚...orz
: 我的UI實際上是這個樣子的:
" target="_blank">" class="img-responsive" />
: (工作上的東西,請恕我塗黑)
: Raw Data 是從 Binary File 裡面讀出來的一大串 byte array
: 每個Control的資料,有可能是這些來源之一:
: (1) Raw Data 的某個 byte,顯示在 TextBox 上 => 10進位或16進位顯示
: (2) Raw Data 的某個 byte 的某一個 bit => 做為 CheckBox 是否勾選
: (3) Raw Data 的某個 byte 裡的某一些 bit => 做為 ComboBox 的 Index 選項
: (4) Raw Data 裡的多個 byte 組合成一個16位元或32位元的無號數 => TextBox 顯示
: 這樣的資料有好幾個Page,所以項目相當的多,而且沒有規則
: 我想問的是,Raw Data與Control之間要怎麼互動是最好的
: RawData讀出來可以正確的顯示在Control上
: Control上的改變也可以回寫至Raw Data
本來想推文,後來發現會寫很多就算了。
簡單一句話:取聯集。
或者詳細點的,
依照你的意思,我理解成這樣,
1. 一個RawData就是一筆資料
2. 一個RawData的不同Byte用不同的Control去顯示
3. 一個RawData的多個Byte可以組合成一個資訊,讓Control去顯示
如果換成程式碼的話,我的理解是這樣,
1. 一個RawData就是一個物件
2. 每個不同的Byte當成是一個基本屬性(最高溫度、最低溫度)
3. 多個基本屬性可以運算成另一個屬性(如:平均溫度=(最高溫度+最低溫度)/2)
4. 每個屬性都有一個Control去顯示
我的作法是,
一個RawData所有需要的顯示的屬性都算出來,
再來看你想怎樣的顯示方式。
1. 把所有要顯示的control都集合成一個,然後全部用DataGridView都顯示。
不管你是最高溫度、最低溫度、濕氣、紫外線、平均溫度…
不管其他資訊要不要,我一次都處理好全部顯示給你。
2. 如果顯示樣板數量有確認,如固定10個樣板
根據不同樣板給予不同資料。
如:你有溫度顯示樣板,紫外線顯示樣板,你點選什麼樣版我就給你怎樣資訊。
不管怎麼做,你一個RawData所需要的資訊一定要全部算出來。
資料與顯示頁面的連動部分,
可以利用控制項的Eevent、INotifyPropertyChanged、Binding,
方法很多選個你喜歡的。
作者: james732 (好人超)   2014-05-15 20:33:00
謝謝您的回覆,我再想想看要怎麼做比較好其實我的問題主要是在資料量很大的情況下,怎麼做比較好目前大量的Property以及大量的Control Binding我自己都覺得弄錯了很難找問題....
作者: Ammenze (藍天白雲)   2014-05-15 22:27:00
資料多的control binding用grid最好主要就是找出部分規則配例外處理
作者: Eleganse (艾勒更斯)   2014-05-15 22:45:00
看了一下 主要問題出在J大針對每一個檔案都new了一個class form出來對應 實際上應該要用grid view中的row就好gridview中的每一個row 都可以放你想要放的所有子控制項
作者: james732 (好人超)   2014-05-16 06:55:00
以我目前的ui配置,我不知道要怎麼改用datagridview...我目前只會用基本的datagridview,把List做為datasource顯示出來謝謝您的費心說明,我會再多用功的XD
作者: Eleganse (艾勒更斯)   2014-05-16 18:30:00
把gridview從工具箱拉出來後 切到原碼畫面去看(也就是切過去後 視窗會警告你不要亂改的那頁)把你放到class form裡面那些checkbox、combobox控制項塞到gridview裡面去 讓gridview去幫你代勞展這數千個form當然gridview會幫你展成一列一列的row 而不是form
作者: james732 (好人超)   2014-05-16 21:46:00
好的,我再仔細看看那邊自動產生的code

Links booklink

Contact Us: admin [ a t ] ucptt.com