SetupEditor此事件可用于通过设置编辑器控件Editor上的属性来修改、控制自定义单元格编辑器的行为。例如,下面的代码检查所使用的编辑器是否为文本框控件,然后设置编辑器的CharacterCasing和MaxLength属性。
这里我们要先说一个概念,我们平时在表属性中设置了列表项目、字典、图片字典、下拉目录树、智能筛选、日期列等等,当我们将鼠标定位到某个单元格时,可以看到一个下拉按钮。如果显示了这个下拉按钮,基本上就可以在视觉上判断此列有设置Editor属性,点击下拉按钮就可以启动加载这个编辑器控件。通常通过单击下拉按钮、双击、空格键、F2键都可以触发SetupEditor事件加载编辑器控件进入编辑模式。通过前面的“事件执行顺序”我们可以研究一下此事件触发的时间点。
我们可以考虑在这个时候将编辑器控件的属性修改一下。做一些个性化的设置。此时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 '为了防止编辑器转换失败而报错,使用TryCast转换,如果非常明确控件类型,可以直接使用隐式转换 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 == "电话") { // 为了防止编辑器转换失败而报错,使用TryCast转换,如果非常明确控件类型,可以直接使用隐式转换 SmComboBox cmb = tbl.Editor as SmComboBox; if (cmb != null) { cmb.MaxLength = 13; cmb.MaskInfo.EditMask = "9999-99999999"; } } } |