DataGridView自定義單元格表示值、Error圖標(biāo)顯示的方法介紹
自定義單元格表示值
通過(guò)CellFormatting事件,可以自定義單元格的表示值。(比如:值為Error的時(shí)候,單元格被設(shè)定為紅色)
示例:
private void dgv_Users_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
try
{
if (e == null || e.Value == null || !(sender is DataGridView))
return;
DataGridView dgv = sender as DataGridView;
if (dgv.Columns[e.ColumnIndex].Name=="Sex")
{
string value = e.Value.ToString();
if (value.Equals("女"))
{
e.Value = "Woman";
e.FormattingApplied = true;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace);
}
}Error圖標(biāo)顯示
為了提醒用戶注意,DataGridView可以使用Error圖標(biāo)來(lái)突出顯示。
Error圖標(biāo)可以在單元格和行頭內(nèi)表示,但不能在列頭上顯示。
1、ErrorText屬性
當(dāng)設(shè)定單元格/行的ErrorText屬性的內(nèi)容后,單元格/行的Error圖標(biāo)就會(huì)被表示出來(lái)。另外,只有在DataGridView.ShowCellErrors=True時(shí),Error圖標(biāo)才能顯示。(默認(rèn)屬性為True)
設(shè)定(0,0)的單元格表示Error圖標(biāo)
this.dgv_Users[0, 0].ErrorText = "只能輸入男或女";
設(shè)定第4行的行頭顯示Error圖標(biāo)
this.dgv_Users.Rows[3].ErrorText = "不能輸入負(fù)數(shù)";
2、CellErrorTextNeeded、RowErrorTextNeeded事件
即時(shí)輸入時(shí)的Error圖標(biāo)的表示,可以使用CellErrorTextNeeded事件。同時(shí),在大量的數(shù)據(jù)處理時(shí),需要進(jìn)行多處的內(nèi)容檢查并顯示Error圖標(biāo)的應(yīng)用中,遍歷單元格設(shè)定ErrorText的方法是效率低下的,應(yīng)該使用CellErrorTextNeeded事件。行的Error圖標(biāo)的設(shè)定則應(yīng)該使用RowErrorTextNeeded事件。但是,需要注意的是當(dāng)DataSource屬性設(shè)定了VirtualMode=True時(shí),上述事件則不會(huì)被觸發(fā)。
CellErrorTextNeeded、RowErrorTextNeeded事件一般在需要保存數(shù)據(jù)時(shí)使用,保存數(shù)據(jù)之前先判斷單元格輸入的值是否合法,如果不合法,則在不合法的單元格或行顯示Error圖標(biāo)。相當(dāng)于做了一個(gè)客戶端的驗(yàn)證。
private void dgv_Users_CellErrorTextNeeded(object sender, DataGridViewCellErrorTextNeededEventArgs e)
{
DataGridView dgv=sender as DataGridView;
if (dgv.Columns[e.ColumnIndex].Name.Equals("Sex"))
{
string value = dgv[e.ColumnIndex, e.RowIndex].Value.ToString();
if (!value.Equals("男") && !value.Equals("女"))
{
e.ErrorText = "只能輸入男或女";
}
}
}private void dgv_Users_RowErrorTextNeeded(object sender, DataGridViewRowErrorTextNeededEventArgs e)
{
DataGridView dgv = sender as DataGridView;
if (dgv["UserName", e.RowIndex].Value == DBNull.Value && dgv["Password", e.RowIndex].Value == DBNull.Value)
{
e.ErrorText = "UserName和Password列必須輸入值";
}
}到此這篇關(guān)于DataGridView自定義單元格表示值、Error圖標(biāo)顯示的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
winform樹形菜單無(wú)限級(jí)分類實(shí)例
本文介紹了“winform樹形菜單無(wú)限級(jí)分類實(shí)例”,需要的朋友可以參考一下2013-03-03
C#?wpf實(shí)現(xiàn)任意控件更多調(diào)整大小功能
這篇文章主要為大家詳細(xì)介紹了C#?wpf實(shí)現(xiàn)任意控件更多調(diào)整大小功能的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01
C#實(shí)現(xiàn)簡(jiǎn)單獲取掃碼槍信息代碼
本文給大家分享的是使用C#實(shí)現(xiàn)簡(jiǎn)單獲取掃碼槍信息代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。2016-07-07
c# Process.Start()找不到系統(tǒng)文件的解決方法
vs1027在X64應(yīng)用程序下執(zhí)行process.start()時(shí),OK;但是在X86應(yīng)用程序下執(zhí)行process.start(),報(bào)錯(cuò):找不到系統(tǒng)文件,本文就詳細(xì)的介紹一下解決方法,感興趣的可以了解一下2023-09-09

