【问题标题】:Error in mouse move after double click in datepicker of a C1FlexGrid双击 C1FlexGrid 的日期选择器后鼠标移动出错
【发布时间】:2014-07-08 08:07:05
【问题描述】:

构建: 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
更令人担忧的是,如果我使用回车键和箭头键将焦点从日期选择器弹出窗口转移到下一个单元格,则不会出现错误。

关于原因是“我的创造”还是 C1Flexgrid 上的错误有什么想法吗??

【问题讨论】:

  • 请解释一下 pDataTable 的结构。我认为这与它有关。另外,您如何在 .Net 4.0 项目中添加特定于 Framework 2 的构建?
  • @nilay:pDataTable 是我的查询结果,通常是一个 ID(数字),包含文本、日期、小数、查找文本和 id。都是土生土长的。至于特定于框架的构建,我不知道。我在licx 中添加了 dll 作为参考和许可证。
  • 你看到的块是一个通用函数,用于在 UI 上将过程结果加载到 C1grid

标签: c# winforms datepicker c1flexgrid


【解决方案1】:

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

按照以下步骤解决您的问题:

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

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

  3. 运行您的应用程序

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

见下面的sn-p:

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();
    } 

这个sn-p与环境的唯一区别DataTable的结构。编译时,双击日期选择器弹出窗口选择日期然后移动鼠标时没有观察到崩溃。

您可以从here下载工作项目

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 2022-08-20
    • 2022-07-23
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    • 2023-04-09
    • 1970-01-01
    • 2014-12-08
    相关资源
    最近更新 更多