向Winforms添加一个按钮DataGridView [英] Adding a button to a Winforms DataGridView

查看:144
本文介绍了向Winforms添加一个按钮DataGridView的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有办法在C#中的Winforms DataGridView单元格中添加一个控件(例如按钮)?



(我正在把各种各样的东西控制在网格的不同单元格中...)

解决方案

你可以这样做....



有两种方法可以执行此操作:




  • 1)。将DataGridViewCell转换为存在的某种单元格类型。对于
    示例,将DataGridViewTextBoxCell转换为
    DataGridViewComboBoxCell类型。

  • 2)。创建控件并将其添加到
    DataGridView的控件集合中,将其位置和大小设置为适合
    主机的单元格。



查看下面的示例代码,说明了这些技巧。



代码片段

  private void Form5_Load(object sender,EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add(name); (int j = 0; j< 10; j ++)
{
dt.Rows.Add();
}
this.dataGridView1.DataSource = dt;
this.dataGridView1.Columns [0] .Width = 200;

/ *
*第一种方法:转换为现有的单元格类型,如ComboBox单元格,
* /

DataGridViewComboBoxCell ComboBoxCell = new DataGridViewComboBoxCell() ;
ComboBoxCell.Items.AddRange(new string [] {aaa,bbb,ccc});
this.dataGridView1 [0,0] = ComboBoxCell;
this.dataGridView1 [0,0] .Value =bbb;

DataGridViewTextBoxCell TextBoxCell = new DataGridViewTextBoxCell();
this.dataGridView1 [0,1] = TextBoxCell;
this.dataGridView1 [0,1] .Value =some text;

DataGridViewCheckBoxCell CheckBoxCell =新的DataGridViewCheckBoxCell();
CheckBoxCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
this.dataGridView1 [0,2] = CheckBoxCell;
this.dataGridView1 [0,2] .Value = true;

/ *
*第二种方法:将控件添加到单元格中的主机
* /
DateTimePicker dtp = new DateTimePicker();
dtp.Value = DateTime.Now.AddDays(-10);
//将DateTimePicker添加到DataGridView的控件集合
this.dataGridView1.Controls.Add(dtp);
//设置其位置和大小以适应单元格
dtp.Location = this.dataGridView1.GetCellDisplayRectangle(0,3,true).Location;
dtp.Size = this.dataGridView1.GetCellDisplayRectangle(0,3,true).Size;
}


Is there a way to add a control (e.g. a button) to a Winforms DataGridView cell in C#?

(What I'm aiming at is putting various kinds of controls in different cells of the grid...)

解决方案

you can do like this....

There're two ways to do this:

  • 1). Cast a DataGridViewCell to a certain cell type that exists. For example, convert a DataGridViewTextBoxCell to DataGridViewComboBoxCell type.
  • 2). Create a control and add it into the controls collection of DataGridView, set its location and size to fit the cell that to be host.

See my sample code below which illustrates the tricks.

Code Snippet

    private void Form5_Load(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("name");
        for (int j = 0; j < 10; j++)
        {
            dt.Rows.Add("");
        }
        this.dataGridView1.DataSource = dt;
        this.dataGridView1.Columns[0].Width = 200;

        /*
         * First method : Convert to an existed cell type such ComboBox cell,etc
         */

        DataGridViewComboBoxCell ComboBoxCell = new DataGridViewComboBoxCell();
        ComboBoxCell.Items.AddRange(new string[] { "aaa","bbb","ccc" });
        this.dataGridView1[0, 0] = ComboBoxCell;
        this.dataGridView1[0, 0].Value = "bbb";

        DataGridViewTextBoxCell TextBoxCell = new DataGridViewTextBoxCell();
        this.dataGridView1[0, 1] = TextBoxCell;
        this.dataGridView1[0, 1].Value = "some text";

        DataGridViewCheckBoxCell CheckBoxCell = new DataGridViewCheckBoxCell();
        CheckBoxCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
        this.dataGridView1[0, 2] = CheckBoxCell;
        this.dataGridView1[0, 2].Value = true;

        /*
         * Second method : Add control to the host in the cell
         */
        DateTimePicker dtp = new DateTimePicker();
        dtp.Value = DateTime.Now.AddDays(-10);
        //add DateTimePicker into the control collection of the DataGridView
        this.dataGridView1.Controls.Add(dtp);
        //set its location and size to fit the cell
        dtp.Location = this.dataGridView1.GetCellDisplayRectangle(0, 3,true).Location;
        dtp.Size = this.dataGridView1.GetCellDisplayRectangle(0, 3,true).Size;
    }

这篇关于向Winforms添加一个按钮DataGridView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆