全部 脚本手册 视频教程 图文教程 推荐教程

教程分类

推荐文档

EXE打包设计


如何通过代码的方式添加控件(DataGridView示例)


时间:2021/7/7 访问:2170

建议先观看最新视频教程:DataGridView控件的创建和使用   http://www.visualget.com/article/214

image.png

    要给窗体中添加控件,可以在工具箱里把需要创建的控件拖拽到窗体中,也可以通过代码的方式动态创建,由于EXE开发使用的是C#语言,支持直接调用微软winform桌面开发中的控件,有些不常用的winform控件虽然在工具箱里没有显示,但通过代码方式也是可以使用的。下面以DataGridView表格控件为例,介绍如何通过代码的方式创建控件。

    首先新建一个空白模板的项目,通过拖拽控件方式创建两个按钮和一个Panel控件

image.png

    在主窗体类中定义一个DataGridView类型的变量并实例化

DataGridView dataGridView1 = new DataGridView();

dataGridView1变量就是我们刚创建好的控件对象,双击主窗体标题位置自动创建窗体载入方法,完成后如下图

image.png

然后在窗体Load方法中定义dataGridView1的各项属性,创建列和行。不熟悉DataGridView用法的可以百度搜索"C# winform DataGridView",我这里就不一样解析了,直接上代码。

void 主窗口_Load(object sender, EventArgs e)
		{
			dataGridView1.AllowUserToAddRows = false;
			dataGridView1.Name = "dataGridView1";
            dataGridView1.Dock = DockStyle.Fill;
            panel1.Controls.Add(dataGridView1);

            dataGridView1.Columns.Add("col1", "普通文本列");
            dataGridView1.Columns.Add(new DataGridViewCheckBoxColumn() { Name="col2", HeaderText="复选框列" });
            DataGridViewComboBoxColumn colCombobox = new DataGridViewComboBoxColumn();
            colCombobox.Name = "col3";
            colCombobox.HeaderText = "下拉框列";
            colCombobox.Items.Add("下拉选项一");
            colCombobox.Items.Add("下拉选项二");
            colCombobox.Items.Add("下拉选项三");
            dataGridView1.Columns.Add(colCombobox);
            dataGridView1.Columns.Add(new DataGridViewLinkColumn() { Name="col4", HeaderText="删除" });

            dataGridView1.Rows.Add(new object[] { "第1行内容", "True", "下拉选项二", "删除"});
            dataGridView1.Rows.Add(new object[] { "第2行内容", true, "下拉选项三", "删除"});
            dataGridView1.Rows.Add(new object[] { "第3行内容", true, "下拉选项一", "删除"});
            
            dataGridView1.CellContentClick += new DataGridViewCellEventHandler(dataGridView1_CellContentClick);
		}

注意Load中最后一行我们定义了表格单元格内容被单击时执行dataGridView1_CellContentClick方法,在该方法中我们可以定义单元格中的控件被点击时执行哪些代码,比如最后一列中的删除按钮的点击事件。

		void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        	if(e.ColumnIndex == 3)
        	{
        		dataGridView1.Rows.RemoveAt(e.RowIndex);
        	}
        }

最后双击增加行和删除行,完成相应的功能代码。

完整代码如下

using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace VGEXEDesigner
{
	public partial class 主窗口 : Form
	{
		DataGridView dataGridView1 = new DataGridView();
		void 主窗口_Load(object sender, EventArgs e)
		{
			dataGridView1.AllowUserToAddRows = false;
            dataGridView1.Dock = DockStyle.Fill;
            panel1.Controls.Add(dataGridView1);

            dataGridView1.Columns.Add("col1", "普通文本列");
            dataGridView1.Columns.Add(new DataGridViewCheckBoxColumn() { Name="col2", HeaderText="复选框列" });
            DataGridViewComboBoxColumn colCombobox = new DataGridViewComboBoxColumn();
            colCombobox.Name = "col3";
            colCombobox.HeaderText = "下拉框列";
            colCombobox.Items.Add("下拉选项一");
            colCombobox.Items.Add("下拉选项二");
            colCombobox.Items.Add("下拉选项三");
            dataGridView1.Columns.Add(colCombobox);
            dataGridView1.Columns.Add(new DataGridViewLinkColumn() { Name="col4", HeaderText="删除" });

            dataGridView1.Rows.Add(new object[] { "第1行内容", "True", "下拉选项二", "删除"});
            dataGridView1.Rows.Add(new object[] { "第2行内容", true, "下拉选项三", "删除"});
            dataGridView1.Rows.Add(new object[] { "第3行内容", true, "下拉选项一", "删除"});
            
            dataGridView1.CellContentClick += new DataGridViewCellEventHandler(dataGridView1_CellContentClick);
		}
		void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
        	if(e.ColumnIndex == 3)
        	{
        		dataGridView1.Rows.RemoveAt(e.RowIndex);
        	}
        }
		void BtnDelRow_Click(object sender, EventArgs e)
		{
            if (dataGridView1.SelectedCells.Count > 0)
            {
                dataGridView1.Rows.RemoveAt(dataGridView1.SelectedCells[0].RowIndex);
            }
		}
		void BtnAddRow_Click(object sender, EventArgs e)
		{
            dataGridView1.Rows.Add(new object[] { string.Format("第{0}行内容",dataGridView1.Rows.Count + 1), "True", "下拉选项二", "删除"});
		}
	}
}


下面是完整项目源码,需要的可以下载

DataGridView控件示例.rar