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

CellButtonClick当用户单击单元格上的编辑按钮时触发此事件。通常,此事件用于弹出单元格的自定义编辑器(例如,用于选择颜色、日期、文件、图片、自定义输入窗口等的对话框)。默认情况下,单元格编辑按钮显示在单元格的右侧,带有省略号标题(“...”)。它们类似于PropertyGrid控件中显示的按钮,位于图像属性旁边。你可以通过将图片指定给BaseGrid.CellButtonImage来自定义按钮的外观。要在单元格上创建编辑按钮,必须设置BaseGrid.AllowEditing属性为true并设置BaseGrid.Cols("列名称").ComboList属性为“...”或“|...”。“|...”表示允许用户直接在单元格里面输入文本内容。

下面是e参数可以获得的对象清单

Vb.Net
Public Sub SmGrid1_CellButtonClick(sender As Object,e As C1.Win.C1FlexGrid.RowColEventArgs)
    Dim tbl As SmGrid=sender
    '表中RowCol参数主要包含行、列值
    Dim intRow As Integer=e.Row
    Dim intCol As Integer=e.Col
    '我们可以依据行列信息进而获得
    Dim strColName As String=tbl.Cols(intCol).Name
    '获得ColData对象
    Dim dc As ColData=tbl.DataTableHelp.DataCols(strColName)
    '获得ColBase对象
    Dim dvc As ColBase=tbl.View.ViewCols(strColName)
    '获得RowData对象
    Dim dr As RowData=tbl.Rows(intRow).GetRowData()
End Sub

C#
public void SmGrid1_CellButtonClick(object sender, C1.Win.C1FlexGrid.RowColEventArgs e)
{
    SmGrid tbl = sender as SmGrid;
    // 表中RowCol参数主要包含行、列值
    int intRow = e.Row;
    int intCol = e.Col;
    // 我们可以依据行列信息进而获得
    string strColName = tbl.Cols[intCol].Name;
    // 获得ColData对象
    ColData dc = tbl.DataTableHelp.DataCols[strColName];
    // 获得ColBase对象
    ColBase dvc = tbl.View.ViewCols[strColName];
    // 获得RowData对象
    RowData dr = tbl.Rows[intRow].GetRowData();
}

具体的想在打开事件中打开一个窗体的话,可以参考“代码自定义执行”。我们还得注意,默认情况下,设置了列的ComboList属性为“...”或“|...”后,点击单元格的编辑按钮,就会有一个文本编辑器打开。如果我们自己主动去打开一个自定义窗体的话,那么自然是希望这个默认的文本编辑窗口就不要弹出了。这时候我们可以设置e参数的Cancel为True,以阻止文本编辑器的打开。