Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 主要对象 > BaseGrid > 事件 >
SetupEditor

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";
        }
    }
}