2010-11-18 53 views
2

我在VB.NET中編寫應用程序,並面臨以下問題。我試圖創建一個界面,允許用戶根據一系列時間和一週中的天數來選擇他們的可用性。我想創建一個表格形式的複選框控件,其中有兩個索引,我可以用它們來引用特定的時間範圍和一週中的某一天。該表看起來像這樣:多維數組控件

 
      Sunday Monday Tuesday Wednesday Thursday Friday Saturday 
1:00am  [x]  [x]  [x]  [x]  [x]  [x]  [x] 
2:00am  [x]  [x]  [x]  [x]  [x]  [x]  [x] 
3:00am  [x]  [x]  [x]  [x]  [x]  [x]  [x] 
4:00am  [x]  [x]  [x]  [x]  [x]  [x]  [x] 

...等等。所以週日@凌晨1點會是0,1 - 週一@凌晨1點會是0,2 - 等

我跟着文章找到了here它創建並公開了一個控件數組,但是它不是多線程的,維。

有沒有人知道類似的方式來動態生成控件並將它們存儲在VB.NET中的多維數組中?

在此先感謝!

回答

1

您可能需要考慮在表單中使用TableLayoutPanel。

您可以使用的一種方法是在設計器中創建單個控件,如果它是固定大小的網格,或者在可變大小的網格的程序代碼中,並將它們放入(或添加到)網格中細胞。

如果您需要處理點擊事件,您可以將所有控件的事件綁定到單個處理程序(在您鏈接到的文章中進行了描述)。然後,設置每個控件的標籤屬性以反映網格位置。例如,如果您的網格小於十乘十,請使用十進制數字中的列和該位置中的行的整數設置標記。在處理程序例程中,tou可以使用sender.tag屬性來判斷哪個控件被點擊了。

---進一步閱讀後,看起來您可以使用TableLayoutPanel GetPositionFromControl方法來確定觸發該事件的控件的位置,即:tableName.GetPositionFromControl(sender)。我將在稍後的代碼中嘗試,也許我可以擺脫標籤。

如果您不需要處理事件,則可以使用TablelayoutPanel的GetControlFromLocation方法來訪問各個控件。

因此,實際上,您可以使用TableLayoutPanel作爲二維控件數組,而無需編寫自己的數組。

3

控件是一個昂貴的對象。你在這裏太多了,繪畫表格開始變得明顯變慢。改爲使用DataGridView,添加DataGridViewCheckBoxColumn類型的列。

+0

好的,我們將會研究它。謝謝 – 2010-11-18 20:40:18

+0

雖然這個答案不能反映你的問題,但它是更好的解決方案。然後,您可以通過行然後單元格屬性訪問特定的單元格。 – AMissico 2010-11-19 02:12:05