SetupEditor此事件可用于通過設(shè)置編輯器控件Editor上的屬性來修改、控制自定義單元格編輯器的行為。例如,下面的代碼檢查所使用的編輯器是否為文本框控件,然后設(shè)置編輯器的CharacterCasing和MaxLength屬性。
這里我們要先說一個概念,我們平時在表屬性中設(shè)置了列表項目、字典、圖片字典、下拉目錄樹、智能篩選、日期列等等,當(dāng)我們將鼠標定位到某個單元格時,可以看到一個下拉按鈕。如果顯示了這個下拉按鈕,基本上就可以在視覺上判斷此列有設(shè)置Editor屬性,點擊下拉按鈕就可以啟動加載這個編輯器控件。通常通過單擊下拉按鈕、雙擊、空格鍵、F2鍵都可以觸發(fā)SetupEditor事件加載編輯器控件進入編輯模式。通過前面的“事件執(zhí)行順序”我們可以研究一下此事件觸發(fā)的時間點。
我們可以考慮在這個時候?qū)⒕庉嬈骺丶膶傩孕薷囊幌?。做一些個性化的設(shè)置。此時BaseGrid.Editor和BaseGrid.Cols("列名稱").Editor其實引用的控件是一樣的。
Vb.Net |
Public Sub SmGrid1_SetupEditor(sender As Object,e As C1.Win.C1FlexGrid.RowColEventArgs) Dim tbl As SmGrid=sender Dim strColName As String=tbl.Cols(e.Col).Name If strColName="電話" Then '為了防止編輯器轉(zhuǎn)換失敗而報錯,使用TryCast轉(zhuǎn)換,如果非常明確控件類型,可以直接使用隱式轉(zhuǎn)換 Dim cmb As SmComboBox=TryCast(tbl.Editor,SmComboBox) If cmb IsNot Nothing Then cmb.MaxLength=13 cmb.MaskInfo.EditMask="9999-99999999" End If End If End Sub |
C# |
public void SmGrid1_SetupEditor(object sender, C1.Win.C1FlexGrid.RowColEventArgs e) { SmGrid tbl = sender as SmGrid; string strColName = tbl.Cols[e.Col].Name; if (strColName == "電話") { // 為了防止編輯器轉(zhuǎn)換失敗而報錯,使用TryCast轉(zhuǎn)換,如果非常明確控件類型,可以直接使用隱式轉(zhuǎn)換 SmComboBox cmb = tbl.Editor as SmComboBox; if (cmb != null) { cmb.MaxLength = 13; cmb.MaskInfo.EditMask = "9999-99999999"; } } } |