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. GDB之调试器用法

    GDB 完成的作用: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序 让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式 当程序被停住时,可以检查此时程序中所发生的事,并追索上文 动 ...

  2. vue 动态渲染数据很慢或不渲染

    vue 动态渲染数据很慢或不渲染 原因是因为vue检测速度很慢,因为多层循环了,在VUE 2.x的时候还能渲染出来,1.x的时候压根渲染不出来.解决方式:在动态改变数据的方法,第一行加上 this.$ ...

  3. 检查并解决CentOS 7 安装Tomcat是否成功

    参考网址 https://blog.csdn.net/Blue_Sky_rain/article/details/91348791

  4. 九十八:CMS系统之登录页面CSRF保护和修改密码页面

    加上CSRF防御 修改密码页面 视图 class ResetPwd(views.MethodView): decorators = [login_required] # 校验登录状态 def get( ...

  5. 九十五:CMS系统之cms后台模板渲染

    定义一个宏,用于渲染static文件的时候,只需要传文件名就可以,上下两个“-”是解决渲染的时候源代码换行的情况 {% macro static(filename) -%} {{ url_for('s ...

  6. 20180817周在ubuntu上面使用kettle一些总结

    1 ubuntu上面安装mysql用户名和密码问题: ubuntu上面安装MySQL的时候,如果是自动安装,没设置密码的话,那么用户名不是root. 比如在ubuntu用文本工具打开:gedit /e ...

  7. linux Centos系统安装Pycharm并创建软链接

    一.环境:Linux|CentOS系统 二.目的:在Linux环境下使用Pycharm(版本2018.3.4) 三.声明:不可用于商业,仅用于交流使用! 1.下载Pycharm压缩包: cd ~ wg ...

  8. JavaScript(5)—— 变量及数据类型

    JavaScript和Java在概念和设计方面都是完全不同的语言.JavaScript由Brendan Eich于1995年发明,并于1997年成为ECMA标准.ECMA-262是官方名称.ECMAS ...

  9. Mybatis 属性配置

    properties  定义配置,配置的属性可以在整个配置文件中的其他位置进行引用 <properties resource="db.properties"></ ...

  10. 【Web网站服务器开发】apache和tomcat 阿帕奇和汤姆猫

    经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总 ...