初始化网格时,同一 DataGridView 列中的控件不呈现

2023-11-29

好坏

Different Controls in DataGridView Column enter image description here

我在 DataGridView 列中托管不同的控件。当我在初始化网格的同时添加控件时,控件显示为文本框(不好)。如果我在 DataGridView 初始化后添加控件,控件会正确呈现(好)。

public Form1()
{
        InitializeComponent();
        ControlsInGridViewColumn(); //<- renders controls as textboxes
}

private void button1_Click(object sender, EventArgs e)
{
        ControlsInGridViewColumn();  //<- does correctly render controls
}

private void ControlsInGridViewColumn()
{
    DataTable dt = new DataTable();
    dt.Columns.Add("name");
    for (int j = 0; j < 10; j++)
    {
        dt.Rows.Add("");
    }
    this.dataGridView1.DataSource = dt;
    this.dataGridView1.Columns[0].Width = 200;

    DataGridViewComboBoxCell ComboBoxCell = new DataGridViewComboBoxCell();
    ComboBoxCell.Items.AddRange(new string[] { "aaa","bbb","ccc" });
    this.dataGridView1[0, 0] = ComboBoxCell;
    this.dataGridView1[0, 0].Value = "bbb";

    DataGridViewTextBoxCell TextBoxCell = new DataGridViewTextBoxCell();
    this.dataGridView1[0, 1] = TextBoxCell;
    this.dataGridView1[0, 1].Value = "some text";

    DataGridViewCheckBoxCell CheckBoxCell = new DataGridViewCheckBoxCell();
    CheckBoxCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
    this.dataGridView1[0, 2] = CheckBoxCell;
    this.dataGridView1[0, 2].Value = true;
}

如何使控件在初始化期间正确呈现?

(我正在动态添加 DataGridViews)。

UPDATE:Jacob Seleznev 的答案适用于表单,但不适用于我需要的用户控件......以下是重现它的方法:

在表格中:

private void button3_Click(object sender, EventArgs e)
{
    this.Controls.Add(new userCtrl());
}

用户控制:

public partial class userCtrl : UserControl
{
    public userCtrl()
    {
        InitializeComponent();
    }

    protected override void OnLoad(EventArgs e)
    {
        ControlsInGridViewColumn();
        base.OnLoad(e);
    }

    public void ControlsInGridViewColumn()
    {
        //same code as above
    }

}

这对我有用:

    protected override void OnLoad(EventArgs e)
    {
        ControlsInGridViewColumn();  //<- does correctly render controls
        base.OnLoad(e);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初始化网格时,同一 DataGridView 列中的控件不呈现 的相关文章

随机推荐

  • 如何在 jQuery 中检查输入文件是否为空

    对于 JS 来说是全新的 我试图在使用 jQuery JavaScript 提交表单时检查文件输入元素是否为空 我已经尝试了很多解决方案 但没有一个对我有用 我正在努力避免 c fakepath 除非没有其他选择
  • Xcode 创建通用 Xcode 存档而不是 iOS 应用程序存档?

    我正在尝试将我的应用程序上传到应用程序商店连接 但无法验证我的应用程序 我还看到标识符和其他信息没有显示 为什么是这样 这是个问题吗 如果我可以改变这一点 如何改变 在此处输入图像描述 1 1 我已经尝试过 此处 2 中发现的投票为2 的东
  • Android - docx4j 构建问题

    我正在开发一个安卓应用程序 我需要在其中显示我的应用程序中的 docx xlsx 文件 我在互联网上搜索并发现docx4j将 docx xlsx 文件转换为 html 或 pdf 所以我打算显示从docx4j在网络视图中 这样我就可以从以下
  • 如何在没有 EventListener 的情况下从 Firebase 检索数据?

    我在 Android 应用程序上使用 Firebase 并且知道如何使用 EventListener 从数据库获取数据 到目前为止 我的问题是这样的 我有一个 ReciclerView 它显示数据中的信息 但仅在我修改数据库时显示 如果我关
  • 我可以检测 unicode 字符串语言代码吗?

    我面临着一种情况 我正在阅读一串文本 并且需要检测语言代码 en de fr es 等 有没有一种简单的方法可以在 python 中做到这一点 如果您需要检测响应用户操作的语言 那么您可以使用谷歌ajax语言API usr bin env
  • 如何将地理点经度+纬度转换为双精度?

    我正在检索地图视图的中心 我需要将经度和纬度作为双精度传递到我的服务器以针对数据库进行测试 我如何将 mapView getMapCenter getLongitudeE6 转换为 double Calling mapView getMap
  • Angularjs对页面加载调用函数

    我在学习AngularJS 我有一些文章标签 单击按钮就会显示每个文章页面 而无需任何页面刷新 这是一页网站 我想要的是当加载文章 id showSelector 时我想调用myFunction 在这个函数中我想显示一个警报 但警报没有显示
  • 根据条件渲染 JSX 元素

    因此 我在我一直在开发的 Web 应用程序中有一个简单的组件 我想知道是否有一种方法可以根据 this props item 的值在该组件中渲染元素 这是我的 JSX var React require react var actions
  • 删除 jQuery Scrollable 插件中特定的轮播窗格

    我在用这个可滚动插件 并且正在研究如何从轮播组中删除轮播窗格 例如 如果我有 5 个轮播窗口 如何以编程方式删除轮播窗口 2 Check this 要删除特定选项卡 请使用此函数 对上面示例的方法稍加修改 function removeIt
  • 替换 ICollection 中的元素

    假设我有一个ICollection
  • -webkit-backdrop-filter 在 Safari 上不起作用

    Safari 14 1 2 不显示 webkit backdrop filter blur 10px 我尝试过多个版本 内联 使用 jQuery 使用 supports但没有任何作用 最奇怪的是 它在 Safari 的 Web Inspec
  • Android 手机方向概述(包括指南针)

    一段时间以来 我一直在尝试了解 Android 方向传感器 我以为我明白了 然后我意识到我没有 现在我想 希望 我对它有了更好的感觉 但我仍然没有100 我将尝试解释我对它的不完整的理解 如果我有部分错误或填补任何空白 希望人们能够纠正我
  • 使用 PowerShell 打开文件

    是否有命令可以从 Visual Studio 中的包管理器控制台 也称为 PowerShell 打开项目项 例如类文件 当我在解决方案资源管理器中双击该文件时 也会发生同样的情况 我尝试使用Invoke Item但这恰好打开了 Visual
  • 将轴名称添加到图表中 C#

    我正在与winforms使用 C 我使用图表 我想在代码中设置 X 轴和 Y 轴的标题 我试过 chart1 chartarea 0 axisX title xxx 但它不起作用 我不知道为什么 我正在使用网络上的图表控件 并通过以下方式设
  • 为什么Oracle监听器和数据库服务没有运行?

    我刚刚开始接触 Red Hat Linux 7 2 和 Oracle 12c 因此 我上周末致力于尝试看看是否可以在 RHEL 7 2 上支持 Oracle 12c 最后 是的 我能够在 RHEL 7 2 VM 上运行 Oracle 但并非
  • 如何使用nodejs获取mongodb单个文档的大小(以字节为单位)?

    我正在使用 db coll findOne 获取文档 我想使用仅具有 mongo 本地驱动程序的 NodeJS 获取文档的大小 以字节为单位 这可能吗 可以使用BSON 这是 mongodb 驱动程序的依赖项 var bson requir
  • 在 Os.Rename 中强制覆盖

    如果另一个文件已经存在 是否可以强制重命名 os rename 来覆盖另一个文件 例如 在下面的代码中 如果文件 Tests csv 已存在 它将被 Tests txt 文件替换 也已重命名为 Tests csv os rename C U
  • 如何将数组列表放入列表框中

    因此 我在一项作业上需要帮助 并且我已经尝试解决它一个多星期了 但我需要帮助将数组列表放入列表框中 That s what the GUI should look like in the end all the information ha
  • 从 Swing GUI 编译并运行 Java 代码

    我正在用 Java Swing 构建一个 GUI 并且必须从中执行 Java 代码 为了测试简单的代码 比如用 Java 打印 HelloWorld 就可以了 我看过论坛问题 我只知道我必须调用操作系统 我使用的是Windows7 来执行该
  • 初始化网格时,同一 DataGridView 列中的控件不呈现

    好坏 我在 DataGridView 列中托管不同的控件 当我在初始化网格的同时添加控件时 控件显示为文本框 不好 如果我在 DataGridView 初始化后添加控件 控件会正确呈现 好 public Form1 InitializeCo