WinForm/C# WnGrid 在 IsAllowEdit=true 的情况下实现双击功能

xinggang · 2016年09月04日 · 67 次阅读

WnGrid 在可编辑状态下直接注册 WnGrid 的双击事件是无法触发的,这时需要通过以下方式注册。

方法一: 注册指定列的编辑控件的双击事件,代码如下:

wnGrid.Columns["BatchNO"].RealColumnEdit.DoubleClick += wnGrid_GridDoubleClick;

注:此方法有问题,我为 BatchNO 注册了双击事件后,其它列如果编辑器类型和 BatchNO 的一样,则同样会触发双击事件,因为其共用了同一个 RealColumnEdit,所以不建议使用此方法。 方法二: 为 WnGrid 注册 ShownEditor 事件,事件方法中继续为编辑器注册双击事件,代码如下:

private void WnFormMain_AfterAssemble(object sender, CancelEventArgs e)
{
    wnGridDetail.GridView.ShownEditor += wnGridDetailGridView_ShownEditor;
}

/// <summary>
/// 响应wnGridDetail的ShownEditor事件,目的是为了在Grid处于可编辑状态下实现双击功能
/// </summary>
private void wnGridDetailGridView_ShownEditor(object sender, EventArgs e)
{
    //为GridView在可编辑状态下注册双击事件
    (sender as GridView).ActiveEditor.DoubleClick += wnGridDetailActiveEditor_DoubleClick;
}

/// <summary>
/// 响应wnGridDetail中ActiveEditor的DoubleClick事件
/// </summary>
private void wnGridDetailActiveEditor_DoubleClick(object sender, EventArgs e)
{
    /* 获取当前行索引 */
    int row = wnGridDetail.GridView.FocusedRowHandle;

    /* 其它操作 */
}

经测试,ShownEditor 事件中重复为 ActiveEditor 注册双击事件不会造成重复调用,未分析出具体原因。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册