在winform應用程序開發中,DataGridView是 用的較多的、也(幾乎)是數據(列表)顯示必用的控件,而此文就是針對DataGridView控件的一些使用作些講解。jquery
一. DataGridView單元格提示windows
這個熟悉的朋友會選擇CellToolTipTextNeeded 事件實現,也確實,然而此事件有個硬性的條件(或者說 讓人感受很不舒服的限制),如圖:ide
上圖中 紅色區域[具體見msdn:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.celltooltiptextneeded(VS.80).aspx]就是我所說的限制,這樣當咱們想實現用代碼一行行add Row時,此事件就與咱們想要的發生衝突(沒法實現單元格提示) ——由於在 DataGridView綁定的數據源(設置了 DataSource)後 或 該控件的 VirtualMode 屬性爲 true (此時行數沒法改變),不能再動態添加行,但咱們想要的 單元格提示效果必須還得想辦法實現(在最初遇到此問題時,感受有點兒'山窮水盡疑無路'),然後靜下心去想,終用DataGridView的CellMouseEnter事件解決,代碼以下:this
canInfoDgv.CellMouseEnter += new DataGridViewCellEventHandler(canInfoDgv_CellMouseEnter);
void canInfoDgv_CellMouseEnter( object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > - 1 )
{
DataGridView dgv = (DataGridView)sender;
DataGridViewCell cellObj = dgv.Rows[e.RowIndex].Cells[e.ColumnIndex];
switch (dgv.Columns[e.ColumnIndex].Name)
{
case " colswName " : cellObj.ToolTipText = " 點擊瀏覽此食物詳細信息! " ; break ;
case " colswWeight " : cellObj.ToolTipText = " 點擊編輯此食物重量! " ; Console.WriteLine( " canInfoDgv_CellMouseEnter : " + cellObj.Value.ToString()); break ; //
case " colswYl " : SetColswYl_ToolTip(cellObj); break ;
case " colEdit " : cellObj.ToolTipText = " 點擊編輯菜餚的組成! " ; break ;
case " colDo " : cellObj.ToolTipText = " 點擊刪除此食物! " ; break ;
default : break ;
}
dgv = null ;
cellObj = null ;
}
}
運行效果:spa
2.DataGridView屬性設置的通用方法code
/// <summary>
/// 設置DataGridView通用屬性
/// </summary>
/// <param name="dgv"></param>
protected void SetDgv_Com(DataGridView dgv)
{
dgv.AllowUserToAddRows = false ;
dgv.AllowUserToResizeColumns = false ;
dgv.AllowUserToResizeRows = false ;
dgv.RowHeadersVisible = false ;
dgv.EditMode = DataGridViewEditMode.EditOnEnter;
// 綁定時不自動建立列(解決列的位置不固定)
dgv.AutoGenerateColumns = false ;
}
/// <summary>
/// 設置DataGridView交替行樣式
/// </summary>
/// <param name="dgv"></param>
/// <param name="deRowColor"> 默認行顏色 </param>
/// <param name="altRowColor"> 交替行顏色 </param>
protected void SetDgv_AlternatingRowColor(DataGridView dgv, Color deRowColor, Color altRowColor)
{
dgv.RowsDefaultCellStyle.BackColor = deRowColor;
dgv.AlternatingRowsDefaultCellStyle.BackColor = altRowColor;
}
/// <summary>
/// 設置 DataGridView 特殊樣式 [無邊框 內容居中 設置表頭背景色]
/// </summary>
protected void SetDgv_SpecialStyle(DataGridView dgvObj, Color HeaderBgColor,Color selectedCellBgColor)
{
SetDgv_SpecialStyle(dgvObj, HeaderBgColor, selectedCellBgColor, System.Drawing.SystemColors.Window, true );
}
/// <summary>
/// 設置 DataGridView 特殊樣式 [無邊框 內容居中 設置表頭背景色]
/// </summary>
protected void SetDgv_SpecialStyle(DataGridView dgvObj, Color HeaderBgColor, Color selectedCellBgColor,Color bgColor, bool isNoBorder)
{
dgvObj.BackgroundColor = bgColor;
if (isNoBorder)
{
dgvObj.BorderStyle = BorderStyle.None;
dgvObj.CellBorderStyle = DataGridViewCellBorderStyle.None;
dgvObj.ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.None;
}
// 設置單元格內容居中顯示 ColumnHeadersDefaultCellStyle:是設置列標題的樣式
dgvObj.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
if (selectedCellBgColor != null )
dgvObj.DefaultCellStyle.SelectionBackColor = selectedCellBgColor;
dgvObj.DefaultCellStyle.SelectionForeColor = Color.Black;
dgvObj.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgvObj.ColumnHeadersDefaultCellStyle.BackColor = HeaderBgColor;
dgvObj.EnableHeadersVisualStyles = false ;
}
寫的很簡單,但願對你們多提意見,‘板磚’也悅收,——「您的支持,是我寫下去的動力!」。orm