1.效果:

2.点击‘配置’按钮;

 private void btn_configure_Click(object sender, EventArgs e)
{
string sum = string.Empty;
string id = string.Empty;
//将显示在界面上的dgv字段列串联起来,作为字符串传到另外一个‘配置’界面
DataTable dt = (DataTable)Dgv.DataSource;
for (int i = ; i < Dgv.ColumnCount; i++)
{
string s = Dgv.Columns[i].HeaderText;
sum += s + ",";
if (Dgv.Columns[i].Visible == true)
{
id += i + ",";
}
}
Frm配置 frm = new Frm配置();
frm.data = sum;
frm.id = id;
frm.TransfEvent += frm_TransfEvent;
frm.ShowDialog();
BindDGVColumns(); }

3.在‘配置界面’循环出dgv的字段列名并绑定在‘配置界面’的dgv上,并对字段列判断是否需要checked;

  public partial class Frm配置 : Form
{
public delegate void TransfDelegate(String value);
public event TransfDelegate TransfEvent;
public Frm配置()
{
InitializeComponent();
}
public string data { get; set; }
public string id { get; set; }
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
string sum = string.Empty;
for (int i = ; i < dgv.Rows.Count; i++) {
if ((bool)dgv.Rows[i].Cells[].EditedFormattedValue == true) {
string s =Convert.ToString(dgv.Rows[i].Cells[].Value);
sum += s + ",";
}
}
TransfEvent(sum);
} private void Frm配置_Load(object sender, EventArgs e)
{
string[] s = data.Split(',');
26 for (int j = 0; j < s.Length; j++)
{
string name = s[j].ToString();
if (name != "") {
// 首先 声明一个 DataGridViewRow 对象 (即要添加的行)
DataGridViewRow dr = new DataGridViewRow();
//设置要添加行的列
DataGridViewCheckBoxCell check = new DataGridViewCheckBoxCell();
DataGridViewTextBoxCell text = new DataGridViewTextBoxCell();
dr.Cells.Add(check);
dr.Cells.Add(text);
//设置列的值 //将声明的行添加到dataGridView1 中
dgv.Rows.Add(dr);
dgv.Rows[j].Cells[].Value = false;
dgv.Rows[j].Cells[].Value = name;
}
}
string[] idsum = id.Split(',');
for (int i = ; i < idsum.Length; i++)
{
string ids = idsum[i].ToString();
if (ids != "") {
int id = Convert.ToInt32(ids);
dgv.Rows[id].Cells[].Value = true;
}
}
}
}

4.根据‘配置界面’穿过来的字符串,循环显示字段列在dgv上面

         public int id;
public static string name;
private void BindDGVColumns()
{
for (int j = ; j < Dgv.ColumnCount; j++)
{
Dgv.Columns[j].Visible = false;
}
string[] s = name.Split(',');
for (int i = ; i <s.Length; i++)
{
bool falg = false;
string name = s[i].ToString();
if (name != "")
{
for (int j = ; j < Dgv.ColumnCount; j++)
{
id = j;
string dgvcname = Dgv.Columns[j].HeaderText;
if (name == dgvcname)
{
falg = true;
break;
}
}
if (falg == true)
{
Dgv.Columns[id].Visible = true;
} }
}
}

winfrom_根据checkbox勾选项增减dgv字段列的更多相关文章

  1. asp.net 翻页时用ViewState保存上一页checkbox勾选的值

    /// <summary>        /// checkbox勾选取消勾选事件        /// </summary>        /// <param nam ...

  2. jquery checkbox勾选取消勾选的诡异问题

    jquery checkbox勾选/取消勾选的诡异问题jquery checkbox勾选/取消勾选的诡异问题 <form>        你爱好的运动是?<input type=&q ...

  3. 设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选

    设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选 >>>>>>>>>>>>&g ...

  4. zTree-已勾选项id传输到action的解决方案

    测试jsp <%@ page language="java" contentType="text/html; charset=utf-8"    page ...

  5. 获取checkbox勾选的id

    需求描述:做批量删除或者批量修改的时候需要获得多个id,根据checkbox勾选来获取对应的d 两种方法: //html代码<table id="table1"> &l ...

  6. oracle表结构和数据导出时的一些勾选项说明

    使用pl/sql developer导出oracle数据库的表结构和表数据时,有一些勾选项供用户选择,需要用户根据实际情况进行勾选或取消. 导出方法如下:一.只导出表结构1.使用pl/sql deve ...

  7. 微信小程序组件解读和分析:八、checkbox复选项

    checkbox复选项组件说明: checkbox是小程序表单组件中的一个组件,作用是在表单中引导用户做出选择. 要使用checkbox组件,还需要在同组中所有的checkbox标签外使用checkb ...

  8. 用DIV遮罩解决checkbox勾选无效的问题

    在前端开发的过程中,遇到一种情况,需要勾选,为了用户的操作便捷就将click事件放到了DIV上.(其中使用了knockout.js) 代码大概如下: <div id="one" ...

  9. treeMultiselect 去掉勾选项

    场景描述:弹窗,显示树形结构,节点层次可变(可只有一级节点,也可是多级节点),限制只能选择一个节点! 1.修改jquery.tree-multiselect.min.js 文件 2.前台页面 参考代码 ...

随机推荐

  1. Flutter常见数据类型及数据类型转换

    简介 既然 Dart 是一门语言,那么就和我们所知道语言一样,有基本的数据类型以及常见的流程处理语法,那么我们就来了解下. Dart 的所有东西都是对象,包括数字,函数等.它们都继承自 Object ...

  2. Download google drive public shared file in terminal

    http://unix.stackexchange.com/questions/136371/how-to-download-a-folder-from-google-drive-using-term ...

  3. 2965 -- The Pilots Brothers' refrigerator

    The Pilots Brothers' refrigerator Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27893 ...

  4. 前端知识点回顾——HTML,CSS篇

    前端知识点回顾篇--是我当初刚转行为了面试而将自己学过的前端知识整理成的一份笔记,个人目的性很强,仅供参考. doctype 有什么用 doctype是一种标准通用标记语言的文档类型声明,目的是告诉标 ...

  5. vue 面试题(文章末尾还有其他链接)

    https://segmentfault.com/a/1190000016344599

  6. 分布式存储ceph部署(2)

    一.部署准备: 准备5台机器(linux系统为centos7.6版本),当然也可以至少3台机器并充当部署节点和客户端,可以与ceph节点共用:     1台部署节点(配一块硬盘,运行ceph-depo ...

  7. JAVA 基础编程练习题9 【程序 9 求完数】

    9 [程序 9 求完数] 题目:一个数如果恰好等于它的因子之和,这个数就称为"完数".例如 6=1+2+3.编程找出 1000 以内的 所有完数. package cskaoyan ...

  8. HBase管理与监控——内存调优

    HMaster 没有处理过重的负载,并且实际的数据服务不经过 HMaster,它的主要任务有2个:一.管理Hbase Table的 DDL操作, 二.region的分配工作,任务不是很艰巨. 但是如果 ...

  9. Servlet(1):基础概念/最简实例

    Servlet 生命周期(1) init()方法初始化Servlet对象  它在第一次创建Servlet时被调用,在后续每次不同用户请求时不再调用.(2) service()方法来处理客户端的请求  ...

  10. python基础学习19,01

    听说python入门很容易,所以想试试对我这个零基础会不会很友好呢.做随笔也顺便督促自己不要轻易放弃学习. #登录接口 print("请输入用户名密码") _username = ...