ComponentOne FlexGrid for WinForms 中文版快速入門(3)--單元格、行列交互


大家好,在這一篇文章中我們將介紹 C1FlexGrid 單元格、行和列操作。

如果您是第一次閱讀本系列文章,建議您閱讀:

使用C1FlexGrid控件來對一個表格格式中的數據進行顯示,編輯,組和總結。該表格可以綁定到一個數據源,它可以對自己的數據進行管理。

C1FlexGrid控件有一個包含以下元素的豐富的對象模型:

image

以下的幾個標題將引導你熟悉C1FlexGrid控件的幾個主要特點:

行與列

介紹了應該如何設置表格尺寸和布局。

單元格選擇

介紹了“當前單元格”和“選擇”的概念。

單元格區域

介紹了應該如何將一個單元格的集合作為一個單元來操作。

單元格圖像

介紹了應該如何在一個單元格中顯示圖像。

C1FlexGrid屬性組

介紹了一個按功能交叉引用的C1FlexGrid主要屬性的圖。

設置單元格格式

介紹了應該如何通過設置數字、日期和布爾值的格式,或為一個單個的單元格或一個單元格的集合改變字體、顏色、對齊方式來自定義表格的外觀。

編輯單元格

介紹了應該如何實現簡單的文字編輯,下拉列表和組合列表,單元格按鈕,編輯掩碼和數據驗證。

合並單元格

介紹了應該如何通過建立“分類”意見來突出數據的關系並更改表格的顯示,以便使具有類似內容的單元格合並到一起。

概述和匯總數據

介紹了應該如何將分類匯總添加到表格和如何建立一個樹形大綱。

保存,加載,並打印

介紹了你應該如何對一個表格的內容或格式進行保存,並在稍后重新加載,或利用其他應用程序,例如Microsoft Access和Excel,來互換表格的數據。本節還介紹了你應該如何對表格進行打印。

C1FlexGrid屬性組

介紹了一個按功能交叉引用的C1FlexGrid主要屬性的圖。

行和列

一個C1FlexGrid控件包括由行和列。行和列的集合受到行和列屬性的影響。

當把表格綁定到一個數據源,行和列的數目取決於可用的數據源中的數據有多少。在綁定模式下,你可以使用集合的Count屬性將它們設置為任意值。例如,下面的代碼將表格的尺寸設置為500行乘以10列:

· Visual Basic

_flex.Rows.Count = 500

_flex.Cols.Count = 10

· C#

flex.Rows.Count = 500;

_flex.Cols.Count = 10;

行和列有兩個基本類型:固定的和滾動的。(通過Count屬性被還原的數值包括了固定的和滾動的單元格)。當用戶垂直滾動表格時,固定行停留在表格頂部;而當用戶水平滾動表格時,固定列停留在表格左側。

image

固定的單元格用於顯示行和列的標題信息。

image

你可以通過使用行和列的集合中“固定的”屬性來設置固定的行和列的數目。例如,下面的代碼可以創建一個具有兩個固定行和無固定列的表格:

· Visual Basic

flex.Rows.Fixed = 1

_flex.Cols.Fixed = 0

· C#

flex.Rows.Fixed = 1;

_flex.Cols.Fixed = 0;

行和列的集合也包含了在表格中插入、刪除和移動行和列的方法。你可以使用“條目”屬性(索引)來訪問在每個集合中的獨立的各個元素(行和列)。

只要你願意,你就可以在設計時通過使用C1FlexGrid列編輯器來設置好表格列,而不是靠編寫代碼來執行這一步操作。有關如何使用C1FlexGrid列編輯器來對列進行編輯的更多詳細信息,請參閱C1FlexGrid列編輯器(第25頁)。

列寬度

列的寬度取決於它的“寬度”屬性。在設計時,可以在表格中直接設置“寬度”屬性,或通過C1FlexGrid列編輯器來進行。在表格中,單擊並拖動出現在列標題的右邊緣的水平的雙箭頭可以重新調整列的尺寸。

image

垂直的虛線顯示了表格將會如何被重新調整尺寸。向左拖動指針使列寬變小;將其向右邊拖動使列寬變大。當調整的操作完成,列的“寬度”屬性將被調整。

C1FlexGrid列編輯器中或代碼中,為列指定“寬度”屬性值。有關C1FlexGrid列編輯器的更多詳細信息,請參閱“C1FlexGrid列編輯器”(第25頁)。下面的代碼可以設置第一列到第十列的 “寬度”的屬性:

· Visual Basic

_flex.Cols(1).Width = 10

· C#

_flex.Cols[1].Width = 10;

為了防止一個特定的列被調整,請在無論是列任務菜單上,還是列編輯器或代碼中,都將這一列的“允許調整”屬性設置為“假”。有關列任務菜單的更多詳細信息,請參閱“列任務菜單”(第36頁)。下面的代碼可以將第一列的“允許調整”屬性設置為“假”:

· Visual Basic

_flex.Cols(1).AllowResizing = False

· C#

_flex.Cols[1].AllowResizing = false;

單元格選擇

表格中有一個光標單元格,當表格時是激活的,它會顯示一個焦點矩形。當表格是可編輯的,用戶可以使用鍵盤或鼠標來移動這個光標並且編輯單元格的內容。

image

 

請注意,Office Visual Styles也會通過高亮顯示光標單元格所在的行和列標題,來顯明光標單元格的位置。要想了解更多有關設置“視覺樣式”的詳細信息,請參閱“自定義外觀,使用視覺樣式”(第165頁)。

你可以在代碼中通過使用“行與列”屬性來獲取或設置當前單元格。例如,將任一屬性設置為-1,可以隱藏光標。

表格支持擴展選擇,單元格的矩形范圍由兩個對立的角落決定,即光標所在單元格和單元格選擇的單元格。

image

請注意,Office Visual Styles也通過高亮顯示選定的單元格所在的行和列的標題來顯明了擴展選擇的位置。要想了解更多有關設置“視覺樣式”的詳細信息,請參閱“自定義外觀,使用視覺樣式”(第165頁)。

你可以在代碼中通過使用“行選擇”和“列選擇”屬性來獲取或設置單元格選擇,或通過使用“選擇”的方法也可以。

注意:當光標單元格變化了,該“選擇”會自動復位。要在代碼中創建擴展選項,無論是通過在“行選擇”和“列選擇”之前先設置“行與列”或直接使用“選擇”的方法都可以。

“選擇”的外觀是由以下屬性決定的:

· 定焦矩形決定了焦點矩形的類型是為了表明光標單元格而繪制的。

· 高亮顯示決定了什么時候該“選擇”應該被突出顯示(通常是,當該控件有一個突出的重點時,或者從不)。

· 高亮和定焦都是決定了“選擇”的外觀的單元格樣式(字體,顏色和邊框)。

可供選擇的類型是由“選擇模式”的屬性決定的。在默認情況下,表格支持常規的范圍選擇。你可以修改此行為來防止擴展選擇,或者來按行、按列,或在列表框模式下進行選擇(“列表框模式”可以允許你來選擇個別行)。

當使用列表框選擇模式時,你可以通過使用“選擇”屬性來獲取或設置個別行的選擇狀態。你還可以通過使用“選擇”屬性來恢復選定的行的集合。例如,下面的代碼可以選擇符合一個條件的所有行:

· Visual Basic

' 在“銷售”列中選擇多於8000名銷售的所有行。

_flex.SelectionMode = C1.Win.C1FlexGrid.SelectionModeEnum.ListBox

Dim index As Integer

For index = _flex.Rows.Fixed To _flex.Rows.Count - 1

If Val(_flex(index, "Sales")) > 80000 Then

_flex.Rows(index).Selected = True

End If

Next

Console.WriteLine("There are now {0} rows selected",

_flex.Rows.Selected.Count)

· C#

// 在“銷售”列中選擇多於8000名銷售的所有行。

_flex.SelectionMode = SelectionModeEnum.ListBox;

for (int index = _flex.Rows.Fixed ; index < _flex.Rows.Count; index++)

{

if

(Microsoft.VisualBasic.Conversion.Val(System.Runtime.CompilerServices.Runti

meHelpers.GetObjectValue(_flex[index, "Sales"])) > 80000)

{

_flex.Rows[index].Selected = true;

}

}

Console.WriteLine("There are now {0} rows selected",

_flex.Rows.Selected.Count);

單元格區域

“單元格區域”對象可以使你將單元格的任意組合作為一個簡單的單元來工作。例如,下面的代碼創建了一個“單元格區域”的對象,清除了范圍內的數據,並賦予了它一個自定義樣式:

· Visual Basic

Dim rg As CellRange = _flex.GetCellRange(3, 3, 10, 10)

rg.Data = Nothing

rg.Style = _flex.Styles("MyRangeStyle")

· C#

CellRange rg = _flex.GetCellRange(3, 3, 10, 10);

rg.Data = null;

rg.Style = _flex.Styles["MyRangeStyle"];

“單元格區域”的對象具有可以恢復區域樣式的StyleNew的屬性, 如果存在一個,或創建了一個新的,將其分配給該區域並返回它。在你不需要對格式進行全面控制的情況下,此屬性是很方便的。例如,如果你想要做的是給這個區域設定一個紅色的背景,你可以編寫如下代碼來實現:

· Visual Basic

Dim rg As CellRange = _flex.GetCellRange(3, 3, 10, 10)

rg.StyleNew.BackColor = Color.Red

· C#

CellRange rg = _flex.GetCellRange(3, 3, 10, 10);

rg.StyleNew.BackColor = Color.Red;

單元格圖像

每個表格內的單元格除了在單元格中存儲數據以外還都可以顯示圖像。這可以通過兩種方式來實現:

· 你可以通過使用“設置單元格圖像”的方法,來將一個“圖像”對象分配到一個單元格。這種方法可以允許你指定任意圖像到每個單元格,並且當圖像與單元格中的數據沒有什么關系時這是很有用的。例如,你可能想使用圖片作為一項指標來表明單元格中的數據是無效的。

· 你可以將一個“圖像映射”指定到一列,表格就會將單元格中的數據自動映射到一個相應的圖像。當圖像包含了代表性的數據的情況下,這種方法是很有用的。例如,圖像可能含有表示產品類型的圖標。

 

以上即為 C1FlexGrid 單元格、行列的一些基本特性,在下一篇文章中我們將分享剩余有關單元格、行列的基本操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM