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;
} }
}
}

最新文章

  1. Android消息处理机制(Handler、Looper、MessageQueue与Message)
  2. SpringMVC与MyBatis整合(一)——查询人员列表
  3. 排序算法练习--JAVA(插入、直接选择、冒泡、快速排序、非递归快速排序)
  4. 315. Count of Smaller Numbers After Self
  5. 计算几何--判断两条线段相交--poj 2653
  6. linux中利用awk对数组进行排序
  7. 荣耀6 Plus 的屏幕大小pt计算方法
  8. matlab inpolygon 判断点在多边形内
  9. Unity EditorWindow 笔记
  10. C#入门教程(二)–C#常用快捷键、变量、类型转换-打造C#学习教程
  11. #include &lt;boost/shared_array.hpp&gt;
  12. Serializable接口的背后
  13. HDU 2498 Digits
  14. hdu5303Delicious Apples
  15. Kotlin 扩展
  16. Lua完全自学手册(图文教程)
  17. POSTMAN模拟AJAX请求
  18. 【paper】MTCNN
  19. [UE4]小地图接口设计
  20. SpaceSyntax【空间句法】之DepthMapX学习:第三篇 软件介绍与一般分析流程图

热门文章

  1. QObject 的拷贝构造和赋值操作
  2. R语言:载入rjava(xlsx)包报错
  3. CodeIgniter安装和入门使用(一)
  4. awk 分组求和
  5. Hibernate3主键生成策略
  6. Linux新增开放端口
  7. Linux 查看Tomcat版本信息
  8. Spring-Kafka —— 实现批量消费和手动提交offset
  9. 概率dp作业
  10. pageoffice实现网页打开编辑保存word文档(基于SSM框架)