在 C# 中创建 datagridview 表单

2024-04-10

我是 C# 和 Windows 窗体应用程序的新手。 现在,我想在表单中创建一个 Datagridview,我想用业务对象的属性填充其行。我按照此 msdn 页面中的示例进行操作:如何:将对象绑定到 Windows 窗体 DataGridView 控件 http://msdn.microsoft.com/en-us/library/y0wfd4yz.aspx并创建了我自己的程序,但没有得到与 msdn 示例中类似的结果,而是得到了一个包含三个空行的 datagridview。我究竟做错了什么?这是我的程序:

using System;
using System.Windows.Forms;


public class Form3 : Form
{
    private DataGridView dataGridView1 = new DataGridView();
    private BindingSource bindingSource1 = new BindingSource();

    public Form3()
    {            
        this.Load += new System.EventHandler(EnumsAndComboBox_Load);
    }

    private void EnumsAndComboBox_Load(object sender, System.EventArgs e)
    {
        // Populate the data source.           
        bindingSource1.Add(new Test("bli", "bla", "blop", "ha", "ho", "he"));
        bindingSource1.Add(new Test("bli", "bla", "blop", "ha", "ho", "he"));

        // Initialize the DataGridView.
        dataGridView1.AutoGenerateColumns = false;
        dataGridView1.AutoSize = true;
        dataGridView1.DataSource = bindingSource1;

        // Initialize and add a text box column.
        DataGridViewColumn column = new DataGridViewTextBoxColumn();
        column.DataPropertyName = "Name1";
        column.Name = "Name1";
        dataGridView1.Columns.Add(column);

        // Initialize and add a check box column.
        column = new DataGridViewTextBoxColumn();
        column.DataPropertyName = "Name2";
        column.Name = "Name2";
        dataGridView1.Columns.Add(column);

        column = new DataGridViewTextBoxColumn();
        column.DataPropertyName = "Name3";
        column.Name = "Name3";
        dataGridView1.Columns.Add(column);

        column = new DataGridViewTextBoxColumn();
        column.DataPropertyName = "Name4";
        column.Name = "Name4";
        dataGridView1.Columns.Add(column);

        column = new DataGridViewTextBoxColumn();
        column.DataPropertyName = "Name5";
        column.Name = "Name5";
        dataGridView1.Columns.Add(column);

        column = new DataGridViewTextBoxColumn();
        column.DataPropertyName = "Name6";
        column.Name = "Name6";
        dataGridView1.Columns.Add(column);

        // Initialize the form.
        this.Controls.Add(dataGridView1);
        this.AutoSize = true;
        this.Text = "DataGridView object binding demo";
    }

    #region "test object"
    private class Test
    {
        private string test1;
        private string test2;
        private string test3;
        private string test4;
        private string test5;
        private string test6;

        public Test(string s1, string s2, string s3, string s4, string s5, string s6)
        {
            test1 = s1;
            test2 = s2;
            test3 = s3;
            test4 = s4;
            test5 = s5;
            test6 = s6;
        }

        public Test()
        {
            test1 = "bla";
            test2 = "bla";
            test3 = "bla";
            test4 = "bla";
            test5 = "bla";
            test6 = "bla";
        }


        public string Test1
        {
            get
            {
                return test1;
            }
            set
            {
                test1 = value;
            }
        }

        public string Test2
        {
            get
            {
                return test2;
            }
            set
            {
                test2 = value;
            }
        }

        public string Test3
        {
            get
            {
                return test3;
            }
            set
            {
                test3 = value;
            }
        }

        public string Test4
        {
            get
            {
                return test4;
            }
            set
            {
                test4 = value;
            }
        }

        public string Test5
        {
            get
            {
                return test5;
            }
            set
            {
                test5 = value;
            }
        }

        public string Test6
        {
            get
            {
                return test6;
            }
            set
            {
                test6 = value;
            }
        }
    }

    #endregion

    static class Program
    {
        [STAThread]
        public static void Main()
        {
            Application.Run(new Form3());
        }
    }
}

您将列绑定到名为的属性Name从 1 到 6 但在你的对象中没有这样的属性。改变Name to Test. Ie

由此:

column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Name6";
column.Name = "Name6";
dataGridView1.Columns.Add(column);

to this:

column = new DataGridViewTextBoxColumn();
column.DataPropertyName = "Test6";
column.Name = "Name6";
dataGridView1.Columns.Add(column);

也按照@noobob的建议移动你的

dataGridView1.DataSource = bindingSource1;

到方法结束

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 C# 中创建 datagridview 表单 的相关文章

  • MEX 文件中的断言导致 Matlab 崩溃

    我正在使用mxAssert 宏定义为matrix h在我的 C 代码中 mex 可以完美编译 当我调用的 mex 代码中违反断言时 该断言不会导致我的程序崩溃 而是导致 Matlab 本身崩溃 我错过了什么吗 这是有意的行为吗 当我查看 M
  • 如何进行带有偏差的浮点舍入(始终向上或向下舍入)?

    我想以偏置舍入浮动 要么总是向下 要么总是向上 代码中有一个特定的点 我需要这个 程序的其余部分应该像往常一样四舍五入到最接近的值 例如 我想四舍五入到最接近的 1 10 倍数 最接近 7 10 的浮点数约为 0 69999998807 但
  • 如果.Net Core可以在Windows上运行,为什么不能在.Net Framework中引用.Net Core DLL?

    我明白为什么 Net Framework 可能会在 Net Core IE 中导致问题 因为不存在特定于 Windows 平台的 API 但是为什么不能直接引用 Net Core 作为 Net Framework 中的库呢 如果 Net C
  • std::map 和二叉搜索树

    我读过 std map 是使用二叉搜索树数据结构实现的 BST 是一种顺序数据结构 类似于数组中的元素 它将元素存储在 BST 节点中并按其顺序维护元素 例如如果元素小于节点 则将其存储在节点的左侧 如果元素大于节点 则将其存储在节点的右侧
  • 调试内存不足异常

    在修复我制作的小型 ASP NET C Web 应用程序的错误时 我遇到了 OutOfMemoryException 没有关于在哪里查看的提示 因为这是一个编译时错误 如何诊断此异常 我假设这正是内存分析发挥作用的地方 有小费吗 Thank
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 在 C# 中将位从 ulong 复制到 long

    所以看来 NET 性能计数器类型 http msdn microsoft com en us library system diagnostics performancecounter aspx有一个恼人的问题 它暴露了long对于计数器
  • 转到 C# WPF 中的第一页

    我正在 WPF 中使用导航服务 为了导航到页面 我使用 this NavigationService Navigate new MyPage 为了返回我使用 this NavigationService GoBack 但是如何在不使用的情况
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • C++派生模板类继承自模板基类,无法调用基类构造函数[重复]

    这个问题在这里已经有答案了 我试图从基类 模板 继承 派生类也是模板 它们具有相同的类型 T 我收到编译错误 非法成员初始化 Base 不是基类或成员 为什么 如何调用基类构造函数 include
  • gdb 在 docker 上立即退出“进程已完成,退出代码 1”或 lldb“数据包返回错误 8”。另外:如何在 docker 中允许进行 C++ 调试

    这花了我一整天的时间才找到 所以我将其发布以供将来参考 我正在 docker 镜像上开发 C 我正在使用克利翁 我的代码是在调试模式下编译的 并且在运行模式下运行良好 但是当尝试调试时 进程会立即退出 并显示非常丰富的信息 Process
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • C# 创建数组的数组

    我正在尝试创建一个将使用重复数据的数组数组 如下所示 int list1 new int 4 1 2 3 4 int list2 new int 4 5 6 7 8 int list3 new int 4 1 3 2 1 int list4
  • 如何排列表格中的项目 - MVC3 视图 (Index.cshtml)

    我想使用 ASP NET MVC3 显示特定类型食品样本中存在的不同类型维生素的含量 如何在我的视图 Index cshtml 中显示它 an example 这些是我的代码 table tr th th foreach var m in
  • 通过等待任务或访问其 Exception 属性都没有观察到任务的异常

    这些是我的任务 我应该如何修改它们以防止出现此错误 我检查了其他类似的线程 但我正在使用等待并继续 那么这个错误是怎么发生的呢 通过等待任务或访问其 Exception 属性都没有观察到任务的异常 结果 未观察到的异常被终结器线程重新抛出
  • 如何在 GCC 5 中处理双 ABI?

    我尝试了解如何克服 GCC 5 中引入的双重 ABI 的问题 但是 我没能做到 这是一个重现错误的非常简单的示例 我使用的GCC版本是5 2 如您所见 我的主要函数 在 main cpp 文件中 非常简单 main cpp include
  • boost::program_options:带有固定和可变标记的参数?

    是否可以在 boost program options 中使用此类参数 program p1 123 p2 234 p3 345 p12 678 即 是否可以使用第一个标记指定参数名称 例如 p 后跟一个数字 是动态的吗 我想避免这种情况
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 我应该避免使用管道运算符对包进行编程吗?

    有没有客观原因管道操作员 https cran r project org web packages magrittr vignettes magrittr html来自 R 包magrittr 例如 gt 当我在 R 中编写包时应该避免吗
  • 波兰表示法的实现

    我想编写一个程序来计算给定算术表达式的输出 像那样 我的输入是 1 2 3 4 5 6 我的输出应该是 156 我编写了一个 Java 程序来使用 Stack 数据类型来执行此操作 这是我的 Java 程序 import java util
  • 防止 ejs for 循环中出现空行

    我有以下简单的 ejs 模板 这会产生以下结果 0 1 2 3 4 5 6 7 8 9 如何防止 ejs 创建这样的空行 如果可能的话 我不想修改结果字符串 而是告诉 ejs 不要渲染这些空行 我怎样才能做到这一点 修剪模式 newline
  • 张量流中的正则化损失是什么?

    当使用 Tensorflows 对象检测 API 训练对象检测 DNN 时 它的可视化平台 Tensorboard 会绘制一个名为regularization loss 1 这是什么 我知道什么是正则化 使网络善于通过各种方法 例如 dro
  • GreenDAO支持表之间的多种关系

    我一直在尝试使用 GreenDAO 创建数据库模型 当我尝试在不同表之间创建多个关系时 问题就开始了 基本上 我有一个Message桌子 一个Conversation表和一个User table 用户有一个消息列表 并且该消息有一个父对话
  • printf 命令导致段错误? [复制]

    这个问题在这里已经有答案了 当我尝试初始化一个大型的二维字符数组时 它工作得很好 但是当我添加一个简单的打印命令时 它给了我一个分段错误 关于为什么会发生这种情况有什么想法吗 include
  • 如何将 Zlib 与 Cmake 链接

    我试图将我的文件与 zlib 库链接 但仍然得到 对 deflateInit 的未定义引用 我目前正在使用CLion 已从主页下载了zLib文件并将其添加到项目中 这就是我的 CmakeLists txt 的样子 cmake minimum
  • 查找通过代理连接的客户端的IP地址

    有没有办法收集通过代理服务器连接到您网站的客户端的 IP 地址 整个设置是一个内部 LAN 通过系统管理员 我也可以控制代理计算机 我在网站服务器端使用 PHP5 I tried SERVER REMOTE ADDR 在 PHP 中 但此变
  • 处理 Mongoose 中的架构更改

    随着应用程序的发展 更新 迁移 Mongoose 模式的最佳实践 或工具 是什么 有趣的是 MongoDB 的诞生就是为了解决 RDBMS 中的模式问题 您不必迁移任何内容 您所要做的就是在架构定义中设置默认值 如果该字段是必需的 new
  • 如何管理 MySQL Workbench 中的 SQL 选项卡?

    我经常需要的每个项目都有多个 SQL 查询 我的问题是 我的所有项目都需要 Workbench 中相同的 MySQL 连接 所以我一直打开大量的 SQL 选项卡 如下所示 由于选项卡的数量超过了显示器的宽度 因此我必须左右滚动才能找到一些查
  • 无法使用 String#trim 作为 Array#map 的回调

    由于某种原因我无法使用String prototype trim call作为数组方法的回调 例如map or filter 在这种情况下 两个函数的工作原理相同 function trim string return string tri
  • 在 MySQL WorkBench 中打开现有数据库

    I got a DB files that created in My SQL and I want open them in My SQL WorkBench 6 1 The files I got contains FRM MYD MY
  • 查找数组中的最小值和最大值

    所以我试图找到用户输入的数组的最小值和最大值 这是我的代码 public static void main String args int a new int args length for int i 0 i lt args length
  • 匹配两个数据集中的 ID

    我有两组数据 包括前数据和后数据 受访者拥有唯一的 ID 我想创建一个子集 其中仅包含对两项调查做出回应的受访者 数据集示例 pre data lt data frame ID c 1 10 Y sample c yes no 10 rep
  • 有什么好的 CMS 可以与现有的 Java 网站集成(需要良好的 API)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们有一个大型现有网站 用 Java Spring Hibernate JSP 编写 并希望添加一个内容
  • 提交表单时不要包含空参数

    我的控制器上的索引方法如下所示 public ActionResult Index string search string sort int groupId 对于搜索功能 我有以下形式 using Html BeginForm div H
  • jni 和在 java 中使用 c++ new'ed 对象

    我有一个与数据库对话的 C 层 这个 C 层执行一个新的 SomeObject 并将其返回给 java 我什么时候可以安全地通过 clean jni 调用删除 SomeObject 我可以在java返回对象后立即删除还是需要复制该对象然后删
  • Elm 中的数组与列表

    我很惊讶地得知Array and ListElm 中有两种不同的类型 Array http package elm lang org packages elm lang core 4 0 1 Array List http package
  • Android 位图图像大小

    我正在从网络下载图像 并使用图库小部件来显示图像 如果下载的图像很大 我的应用程序会崩溃并显示以下日志 E GraphicsJNI 3378 VM won t let us allocate 5591040 bytes 仅当图像大小达到会使
  • 在 C# 中创建 datagridview 表单

    我是 C 和 Windows 窗体应用程序的新手 现在 我想在表单中创建一个 Datagridview 我想用业务对象的属性填充其行 我按照此 msdn 页面中的示例进行操作 如何 将对象绑定到 Windows 窗体 DataGridVie