双击C1FlexGrid的datepicker后鼠标移动出错

时间:2014-07-08 08:07:06

标签: c# winforms datepicker c1flexgrid

构建: 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
要添加问题,如果我使用输入和箭头键将焦点从datepicker弹出窗口转移到下一个单元格,则没有错误。

任何想法,如果原因是"我的创作"或C1Flexgrid上的错误??

1 个答案:

答案 0 :(得分:0)

您的问题描述中有两个令人困惑的事情。首先是DataTable的初始化: pDataTable ,其次是您的环境信息。您不知道如何在.NET 4.0项目中添加特定于Framework 2的构建。请转到C1Pre-Release查找最新的flexgrid版本,或使用this build更新您的项目。

请按照以下步骤排查问题:

  1. 将项目框架更改为.NET 4完整配置文件。您可以通过在解决方案资源管理器中右键单击项目来执选择Application Tab。将目标框架更改为“.NET Framework 4”

  2. 更新您的C1FlexGrid参考。您可以通过在解决方案资源管理器中单击解决方案的引用节点来执通过删除它删除C1.Win.C1FlexGrid.2。使用this build进行更新,添加新参考。

  3. 运行您的应用

  4. 如果这不能解决您的问题,根问题就是您的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的结构。当我编译时,当我双击日期选择器弹出窗口以选择日期然后移动鼠标时,没有观察到崩溃。

    您可以从here

    下载工作项目