C# DataGridViewButtonColumn的使用—動態改變按鈕的文本

.Net的DataGridView控件中,提供了一種列的類型,叫 DataGridViewButtonColumn ,這種列類型是展示爲一個 按鈕,可以給button賦予相應的text,並且,此button可以用來做處理事件的判斷依據。

在正式開始介紹使用方法之前,我們先要進行一個概念性的說明:

DataGridViewButtonColumn,雖然在UI展現上,是一個BUTTON的樣子,但是,它的實際形態,並不是傳統意義的BUTTON,而是渲染出來的樣式,完全是painting的效果而已。所以,對於傳統意義的BUTTON的那一套在這裏都失效啦

今天,我們先來說一下,如何根據需要動態改變某個button顯示的文本

程序實現的效果圖如下C DataGridViewButtonColumn的使用—動態改變按鈕的文本 - xyq - xyq

 

實現的步驟:  

給DataGridView添加一列 DataGridViewButtonColumn,設置該列的屬性如下:

DefaultCellStyle 的 NullValue 設置爲 “啓用”

UseColumnTextForButtonValue = False

其他屬性自己根據需要設置

在DataGridView的CellContentClick事件中,寫入如下的類似代碼:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)

{

//註釋:

//dataGridView1.Columns[e.ColumnIndex] is DataGridViewButtonColumn 說明點擊的列是DataGridViewButtonColumn列,當然你也根據e.ColumnIndex == 你的按鈕列的索引來做

// e.RowIndex > -1 ,說明點擊的不是列頭

if (dataGridView1.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex > -1)

{

//獲取當前被點擊的單元格

DataGridViewButtonCell vCell = (DataGridViewButtonCell)dataGridView1.CurrentCell;

if (vCell.Tag == null) { vCell.Value = "停用"; vCell.Tag = true; }

}

}

以上轉自:http://hi.baidu.com/322yali/blog/item/65e8bc1fc474bc13304e15f1.html

-----------------------------------------------------------------------------------------------------------------

下面是根據上面的修改:

                    DataGridViewButtonColumn dgvbc = new DataGridViewButtonColumn();
                    dgvbc.Name = "Gather";
                    dgvbc.HeaderText = "採集";
                    dgvbc.Text = "開始";
                    //dgvbc.UseColumnTextForButtonValue = true;
                    //dgvbc.DefaultCellStyle.NullValue = true;
                    dgvbc.ReadOnly = true;
                    dgvbc.Width = 60;                   

                    this.dgv_Meters.Columns.Add(dgvbc);

                    for (int i = 0; i < this.dgv_Meters.Rows.Count; i++)
                    {
                        this.dgv_Meters.Rows[i].Cells["Gather"].Value = "開始";
                    }

--------------------

        private void dgv_Meters_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {                
                if (dgv_Meters.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex > -1)
                {
                    if (this.dgv_Meters.CurrentCell.Value.ToString() == "開始")
                    {
                        this.dgv_Meters.CurrentCell.Value = "停止";
                    }
                    else
                    {
                        this.dgv_Meters.CurrentCell.Value = "開始";
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章