【问题标题】:A table that shows MySql data, which the user can edit显示 MySql 数据的表格,用户可以对其进行编辑
【发布时间】:2010-12-15 00:48:01
【问题描述】:

我正在开发一个 C# 应用程序,需要为用户提供一个用户友好的工作环境。这个想法是用户使用他/她的 ID 和密码,因此只有与用户相关的数据才会显示在一张桌子。我已经想出了如何做到这一点,但现在用户需要能够编辑表格的内容,因为这一切都是为了给用户提供友好的界面。

我应该使用什么类似表格的组件来实现这一点?我需要能够加载数据并将编辑后的数据保存回数据库,但我还需要能够为单个单元格和边框分配颜色以使其看起来更加用户友好。此外,我更喜欢点击编辑表格内容的方式。

我已经尝试过使用 DataGridView,但它无法自定义它的外观。

我可以利用另一个好的 .net 组件来实现这一点吗?


编辑:这是一个 Windows Forms 桌面应用程序。

【问题讨论】:

  • 这是桌面应用程序还是网络应用程序?有可用的工具包和组件,但通常特定于环境类型,我不想提出错误的建议。
  • ...如果您使用的是桌面,您使用的是 wpf 还是 winforms?
  • 这是一个桌面应用程序。它也只能在单个桌面上运行。
  • DataGridView 是您想​​要的理想组件。它在哪些方面不足以满足您的需求?
  • 您可以将样式设置为数据网格中的单个单元格级别,但如果它不是全局样式,则必须在运行时进行。换句话说,订阅单元格格式化事件(或类似事件)并根据手头的数据设置单元格的单独样式(即,如果值高于某个级别,则将单元格背景设为红色)。此外,如果您的底层数据存储包含实现 IBIndingList 和 INotifyPropertyChanged,它将帮助您保持数据网格、内存和数据库之间的数据同步

标签: c# mysql winforms user-interface


【解决方案1】:

使用 CellFormatting 事件在将单个单元格绑定到数据网格时更改它们

我自己的代码示例:

private void dgColorCodeKey_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{  
    if (e.RowIndex >= 0)
    {
        //if we are binding a cell in the Color column
        if (e.ColumnIndex == colColor.Index)
        {
            //ColorCode is a custom object that contains the name of a System.Drawing.Color
        ColorCode bindingObject = (ColorCode)dgColorCodeKey.Rows[e.RowIndex].DataBoundItem;
        dgColorCodeKey[e.ColumnIndex, e.RowIndex].Style.BackColor = Color.FromName(bindingObject.Color);

        //set this property to true to tell the datagrid that we've applied our own formatting
        e.FormattingApplied = true;
        }
    }
}

此外,请参阅Data Grid FAQ,了解有关数据网格如何工作以及各种方法和事件的作用的非常好的、清晰的描述。

【讨论】:

    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2017-01-16
    • 2018-01-28
    • 1970-01-01
    相关资源
    最近更新 更多