在C1FlexGrid的日期选择器中双击鼠标移动后出现错误



Build: C1Flexgrid v.2.5.20053.230
.Net 4.0使用c# WinForms

我有一个C1Flexgrid在我的表单与多个数据填充为

//cfg is C1FlexGrid, pDataTable is DataTable
cfg.Clear(ClearFlags.UserData);
foreach (DataColumn dCol in pDataTable.Columns)
{
    cfg.Cols.Count += 1;
    iCol = cfg.Cols.Count - cfg.Cols.Fixed;
    cfg.Cols[iCol].Name = dCol.ColumnName;
    cfg.Cols[iCol].Caption = dCol.ColumnName;
    cfg.Cols[iCol].DataType = dCol.DataType;
    switch (dCol.DataType.ToString())
    {
        case "System.DateTime":
        {
            cfg.Cols[iCol].Format = "dd-MMM-yyyy";
            break;
        }
        case "System.Decimal":
        {
            cfg.Cols[iCol].Format = "N3";
            break;
        }
        default:
            break;
    }
}
cfg.DataSource = pDataTable.Copy();

当我双击弹出的日期选择器来选择一个日期,然后移动鼠标,应用程序崩溃了。

edit
为了增加关注,如果我使用enter和箭头键将焦点从日期选择器弹出到下一个单元格,则不会出现错误。

任何想法,如果原因是"我的创作"或bug在C1Flexgrid??

你的问题描述中有两点令人困惑。首先是数据表的初始化:pDataTable,其次是您的环境信息。不知道你是如何在你的。net 4.0项目中添加框架2的。请转到C1Pre-Release以查找最新的flexgrid构建或使用此构建更新您的项目。

按照以下步骤解决问题:

  1. 将项目框架更改为。net 4完整配置文件。可以通过在解决方案资源管理器中右键单击项目来完成此操作。选择"应用程序"选项卡。将目标框架更改为`。. NET Framework 4'

  2. 更新您的C1FlexGrid参考。可以通过在解决方案资源管理器中单击解决方案的引用节点来执行此操作。移除C1.Win.C1FlexGrid。2从它删除它。

  3. 运行您的应用程序

如果这不能解决你的问题,根本问题可能是你的pDataTable初始化。

参见以下代码片段:

private void Form1_Load(object sender, EventArgs e)
    {
        int iCol;
        pDataTable.Columns.Add("Dosage", typeof(int));
        pDataTable.Columns.Add("Drug", typeof(string));
        pDataTable.Columns.Add("Patient", typeof(string));
        pDataTable.Columns.Add("Date", typeof(DateTime));
        pDataTable.Rows.Add(25, "Indocin", "David", DateTime.Now);
        pDataTable.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);
        pDataTable.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);
        pDataTable.Rows.Add(21, "Combivent", "Janet", DateTime.Now);
        pDataTable.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);
        this.cfg.Clear(C1.Win.C1FlexGrid.ClearFlags.UserData);
        foreach (DataColumn dCol in pDataTable.Columns)
        {
            cfg.Cols.Count += 1;
            iCol = cfg.Cols.Count - cfg.Cols.Fixed;
            cfg.Cols[iCol].Name = dCol.ColumnName;
            cfg.Cols[iCol].Caption = dCol.ColumnName;
            cfg.Cols[iCol].DataType = dCol.DataType;
            switch (dCol.DataType.ToString())
            {
                case "System.DateTime":
                    {
                        cfg.Cols[iCol].Format = "dd-MMM-yyyy";
                        break;
                    }
                case "System.Decimal":
                    {
                        cfg.Cols[iCol].Format = "N3";
                        break;
                    }
                default:
                    break;
            }
        }
        cfg.DataSource = pDataTable.Copy();
    } 
除了环境之外,在这个代码片段中唯一的区别是DataTable结构。当我编译时,当我双击日期选择器弹出来选择一个日期,然后移动鼠标时,没有观察到崩溃。

您可以从这里下载工作项目

最新更新