【问题标题】:Nested DataGridView Control嵌套 DataGridView 控件
【发布时间】:2014-02-10 01:29:19
【问题描述】:

我正在尝试创建一个嵌套的 DataGridView 控件,其中将始终打开两级嵌套。它看起来类似于此页面上的图片:http://www.codeproject.com/Articles/12657/GridView-inline-Master-Detail-record-display。不同之处在于每个子嵌套始终是打开的,并且用户没有必要打开/关闭每个嵌套。该控件仅用于显示数据,因此无需直接从该控件修改数据(即使用户不直接修改数据,仍然可以更改)。

如果使用 DataGridView 无法做到这一点,是否有任何其他控件可以做到这一点。

如果没有,是否有人知道另一种方法来做到这一点。我可以,但实施起来会很乏味。一种方法是按顺序添加多个 DataGridView 控件(N 个类别的 2N 个 DataGridControls)。另一个将使用静态控件手动添加所有内容。

【问题讨论】:

  • 我强烈推荐 WPF 而不是 winforms。
  • 你想将datagridview设为不可编辑,还是希望表单中的所有datagridview都不可编辑?
  • 学习如何使用 WPF 然后实现它需要多长时间。 (我对此一无所知。)
  • 为什么不设置 Datagridview 的 ReadOnly 属性。
  • 我不知道只读设置与制作嵌套控件有什么关系。如果确实让我知道。如果嵌套控件无法完成,我只提到只读以增加解决此问题的替代方法建议的数量。

标签: c# winforms datagridview


【解决方案1】:

我不知道这是否会给出答案,但它可能会给你一些帮助。

//button to call function that looks for DatagridView control
private void button2_Click(object sender, EventArgs e)
{
    scanDG(this);
}

private void scanDG(Control parent)
{
    foreach (Control ctrl in parent.Controls)
    {
        if (ctrl.GetType().Name == "DataGridView")
        {//If current Control is Datagridview then set Readonly to true
            ((DataGridView)ctrl).ReadOnly = true;
        }

        //If a control can contain control scan it and look for Datagridview control
        if (ctrl.HasChildren) scanDG(ctrl);
    }
}

【讨论】:

    猜你喜欢
    • 2011-10-03
    • 2014-02-18
    • 2011-05-12
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    相关资源
    最近更新 更多