天天看點

Spread for Windows Forms快速入門(7)---單元格的互動操作

單元格的編輯模式

通常情況下,當終端使用者輕按兩下單元格時,編輯控件将允許使用者在該單元格中輸入内容。在一個單元格中編輯的能力被稱為編輯模式。一些屬性和方法可以用來自定義編輯模式的使用。

當一個單元格處于編輯模式時,活動單元格将顯示一個I型光标,如下圖所示。當該單元格不處于編輯模式時,活動單元格将顯示一個焦點長方形,如下圖所示。

Spread for Windows Forms快速入門(7)---單元格的互動操作
Spread for Windows Forms快速入門(7)---單元格的互動操作

處于編輯模式下的單元格

被選中但是并不處于編輯模式下的單元格

一個單元格将進入編輯模式(開啟編輯模式),當:

使用者在單元格中輸入内容

使用者輕按兩下單元格

EditMode屬性設定為true

一個單元格離開編輯模式(關閉編輯模式),當

使用者按下Enter鍵

使用者激活了另外一個單元格

應用程式丢失焦點

EditMode屬性設定為false

你可以使用StartCellEditing 和 StopCellEditing方法啟動和結束編輯模式。

你可以鎖定一個單元格或者一個區域内的單元格,并使之不能被終端使用者編輯。 你也可以将鎖定單元格的外觀設定為其他樣式,以便于使用者分辨。

你可以使用單元格對象,列對象,行對象,或者交替行對象中的Locked 屬性鎖定單元格。你還可以為StyleInfo對象設定Locked屬性,并将該風格應用到你希望鎖定的單元格上。你還需要設定SheetView對象的 Protect屬性鎖定單元格。 Locked屬性将鎖定的單元格辨別出來,設定Protect屬性可以确定是否鎖定這些單元格。對于标記為鎖定的單元格,要鎖定使用者的輸入,表單的 Protect屬性必須設定為True(預設情況下為True),否則使用者依然可以與單元格進行互動。

另外一種鎖定單元格的方法是将單元格類型設定為文本單元格(使用TextCellType)并且将屬性設定為隻讀(ReadOnly)。 這樣,單元格就不可以編輯了。

确定表單的Protect屬性被設定為True後,你可以鎖定一些列的單元格并在某一行中解鎖這些單元格。 示例代碼如下:

fpSpread1.ActiveSheet.LockBackColor = Color.LightCyan;

fpSpread1.ActiveSheet.LockForeColor = Color.Green;

fpSpread1.ActiveSheet.Columns[0, 3].Locked = true;

fpSpread1.ActiveSheet.Cells[1,1,1,2].Locked = false;

你可以将若幹個單元格合并起來,建立一個合并區域,如下圖所示。合并單元格用于建立一個大型的單元格,位于以前幾個分列的單元格之上。舉例來說,如果你建立了從B2到D3的單元格的合并區域,大型的單元格就占據了單元格B2至D3的空間。

Spread for Windows Forms快速入門(7)---單元格的互動操作

控件分為四個部分:表角,列标題,行标題,以及資料區域。你可以在某一部分建立若幹個合并區域,但是你不能建立橫跨好幾部分的區域。 舉例來說,你不能将資料區域的單元格與行标題的單元格合并,并且你不能将列标題的單元格與表角的單元格合并。這裡主要介紹在資料區域如何合并單元格。

當你建立單元格的合并區域時。合并區域的第一個單元格的資料(通常被稱為錨點單元格)占據了合并區域的所有空白區。當你建立一個合并區域時,原來在各個單元格的資料依舊在合并區域的各個單元格中,但是不會顯示出來。 合并區域僅僅是将資料隐藏了。 如果你将這一組單元格的合并區域移除,合并區域單元格的内容,先前被隐藏的内容,就會正常顯示。通過調用AddSpanCell 方法,你可以建立一個單元格的合并區域。合并區域内的單元格種類不會發生改變。合并的單元格采用合并區域中最左邊的單元格類型。

調用GetCellSpan方法傳回一個單元格是否在合并區域中的判定值。并且如果此單元格在合并區域中,該方法就會傳回CellRange對象,該對象包含錨點單元格的行數和列數, 以及合并區域中的行列數。

通過調用RemoveSpanCell方法你可以将合并區域從一組單元格區域中移除。你可以通過此方法移除單元格合并區域,指定合并區域的錨點單元格,以便移除合并區域。當你想要移除一個合并區域時,以前顯示在各個單元格中的資料又重新顯示在你的眼前。單元格的資料從未沒移除,隻是被合并區域隐藏而已。

下面的示例代碼定義了一些内容然後合并了六個相連的單元格。

// Create some content in two cells.

fpSpread1.ActiveSheet.Cells[1,1].Text = "These six cells are spanned.";

fpSpread1.ActiveSheet.Cells[2,2].Text = "This is text in 2,2.";

// Span six cells including the ones with different content.

fpSpread1.ActiveSheet.AddSpanCell(1, 1, 2, 3);

在使用Spread進行應用程式開發時,你可以允許最終使用者從一個或若幹個單元格的區域内拖拽資料到另外一個單元格或者另外一組單元格内。對于選中的單元格或一組單元格 ,你也可以将其他的單元格填充到一行 (或者若幹行如果超過一列被選中)或者一列(或者若幹列如果超過一行被選中)。

這裡顯示的示例從原始選中的單元格中向一列中填充了幾個單元格。

Spread for Windows Forms快速入門(7)---單元格的互動操作

使用FillDirection枚舉類型,你可以自定義填充的方向。

下面的示例代碼對控件進行了設定以便允許拖拽填充特性。

fpSpread1.AllowDragFill = true;

附:Spread for Windows Forms快速入門系列文章

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/01/2123957.html">Spread for Windows Forms快速入門(1)---開始使用Spread</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/02/2124512.html">Spread for Windows Forms快速入門(2)---設定Spread表單</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/02/2125325.html">Spread for Windows Forms快速入門(3)---行列操作</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/04/2127038.html">Spread for Windows Forms快速入門(4)---常用的單元格類型(上)</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/05/2128501.html">Spread for Windows Forms快速入門(5)---常用的單元格類型(下)</a>

<a href="http://www.cnblogs.com/powertoolsteam/archive/2011/08/08/2130786.html">Spread for Windows Forms快速入門(6)---定義單元格的外觀</a>

相關閱讀:

<a href="http://www.cnblogs.com/powertoolsteam/archive/2013/05/27/3101816.html" target="_blank">Spread for Windows Forms 7新功能使用指南</a>

<a href="http://blog.gcpowertools.com.cn/post/Spread-Studio-101-Release.aspx" target="_blank">Spread Studio 10.0v1 釋出</a>

<a href="http://blog.gcpowertools.com.cn/post/Spread-JS-101-Release.aspx" target="_blank">SpreadJS 10.0v1 釋出</a>

繼續閱讀