是什麼在改變的DataGridView一些行背景色的最好方式,當它不是主動?更改排顏色不活躍的DataGridView
在「真實」的世界中,我想用它來格式化按鈕點擊後的所有DataGridView行,具體取決於某些標準。
要重現行爲,請嘗試:
1.在WinForms應用程序把TabControl的有兩個標籤頁。在第一個標籤上放按鈕,第二個 - DataGridView。
2.使用下面的代碼:
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public int counter = 0;
public Form1()
{
InitializeComponent();
DataTable dt = new DataTable();
dt.Columns.Add("Name", typeof(string));
dt.Columns.Add("Surname", typeof(string));
dt.Rows.Add("Mark", "Spencer");
dt.Rows.Add("Mike", "Burke");
dt.Rows.Add("Louis", "Amstrong");
dataGridView1.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e)
{
counter++;
this.Text = "Event counter: " + counter.ToString();
dataGridView1.Rows[1].DefaultCellStyle.BackColor = System.Drawing.Color.Red;
}
}
}
我把計數器變量用於測試不同的選擇,看看,多少次換色的事件被觸發(少用爲好;) - 最好只有一次) 。
現在,當你第一次按一下按鈕上沒有tabPage2去,然後切換到tabPage2 - 行的顏色不會改變。這是我的問題。
它會工作時,你第一激活tabPage2,並然後按下按鈕,或者當您編程設置tabControl1.SelectedIndex = 1;
,然後色行,然後切換回tabControl1.SelectedIndex = 0;
- 但在這種情況下,它「閃爍」。
我也試圖把換色碼cell_painting事件,但對我來說這是矯枉過正 - 它的發射幾百次在很短的時間,甚至當你移動鼠標的DataGridView,而我需要做的只有一次。
你有什麼建議如何解決這個問題?
最好的問候,
馬辛
如何關於'CellFormatting' – V4Vendetta 2011-06-08 10:55:08
@ V4Vendetta:作爲最後一個解決方案 - 是的,但它被解僱了許多次,浪費了CPU時間;) – mj82 2011-06-08 10:56:27