zoukankan      html  css  js  c++  java
  • DataGridView的单元格如何嵌入多个按钮控件

      前段时间我有一个朋友面试公司的时候遇到这个面试题,他也给了份原题给我瞧瞧,并没有什么特别的要点,关于这一类问题,如何在网格上的单元格嵌入多个控件(如按钮、超链接等)问题,我在网上搜索了下这类问题,发现很多解答但是都杂乱,本篇文章帮助大家了解如何应对这类问题。

      微软提供的DataGirdView网格控件可通过GetCellDisplayRectangle()方法将需要的控件嵌入单元格中,如:

    this.Load += Form1_Load;

    void Form1_Load(object sender, EventArgs e)
    {
      MulAutoBtnEdit();
    }

    private void MulAutoBtnEdit()
    {
      this.dataGridView1.Columns.Add("ColBtnEdit", "嵌入操作按钮");
      this.dataGridView1.Columns["ColBtnEdit"].Width = 150;
      int index = this.dataGridView1.Columns["ColBtnEdit"].Index;
      this.dataGridView1.Columns["ColBtnEdit"].Resizable = DataGridViewTriState.False;
      Button btnAdd = GetBtnByType("BtnAdd","新增");
      Button btnEdit = GetBtnByType("BtnEdit", "修改");
      Button btnDel = GetBtnByType("BtnDel", "删除");
      this.dataGridView1.Controls.Add(btnAdd);
      this.dataGridView1.Controls.Add(btnEdit);
      this.dataGridView1.Controls.Add(btnDel);
      Rectangle rectangle = this.dataGridView1.GetCellDisplayRectangle(index, 0, true);//获取当前单元格上的矩形区域
      btnAdd.Size = btnEdit.Size = btnDel.Size = new Size(rectangle.Width / 3 + 1, rectangle.Height);
      btnAdd.Location = new Point(rectangle.Left, rectangle.Top);
      btnEdit.Location = new Point(rectangle.Left + btnAdd.Width, rectangle.Top);
      btnDel.Location = new Point(rectangle.Left + btnAdd.Width + btnDel.Width, rectangle.Top);
    }

    private Button GetBtnByType(string strBtnName,string strBtnText)
    {
      Button btn = new Button();
      btn.Name = strBtnName;
      btn.Text = strBtnText;
      btn.Click += btn_Click;
      return btn;
    }

    private void btn_Click(object sender, EventArgs e)
    {
      if(sender is Button)
      {
        Button btn = (Button)sender;
        MessageBox.Show(string.Format("点击按钮:{0}",btn.Text));
      }
    }

      效果图:

      通过以上的操作即可将多个按钮嵌入到单元格中,不考虑维护性、效率问题,只在于给予大家思路,对于“超链接”控件等都可用类似的方法处理,类似网址如下:

      https://bbs.csdn.net/topics/340208660

      在网上发行另一种方式,思路差不多,地址我也贴出来:

      https://blog.csdn.net/linzi1015910507/article/details/52595863

      关于第三方DevExpress组件上的网格如GridView等,本人并没有找到好的解决上面问题的方法,有不足之处,知情人事可在留言板上赐教。

      A young idler ~ an old beggar !

  • 相关阅读:
    【重学计算机】操作系统D5章:文件系统
    【重学计算机】操作系统D4章:设备管理
    【重学计算机】操作系统D3章:存储管理
    【重学计算机】操作系统D2章:处理器管理
    【重学计算机】操作系统D1章:计算机操作系统概述
    【重学计算机】计算机组成原理
    java 图片生成缩略图后,转化成流
    jquery textarea输入字符字数提示
    shell 脚本连接mysql数据库查询database中表的数量和表名
    Maven deploy时报Fatal error compiling: tools.jar not found错误的问题处理
  • 原文地址:https://www.cnblogs.com/YangJianhui/p/9157394.html
Copyright © 2011-2022 走看看