亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

WinForm 中實(shí)現(xiàn) DataGridView 按鈕的禁用效果

admin
2025年6月21日 11:24 本文熱度 256

需求提出

在 WinForm 開發(fā)過程中,我們常常會(huì)使用 DataGridView 來(lái)展示和操作數(shù)據(jù)。而當(dāng)需求中要求嵌入按鈕列,并支持按鈕狀態(tài)的"啟用 / 禁用"切換時(shí),事情就變得不那么簡(jiǎn)單了。

最近我就遇到了這樣一個(gè)看似簡(jiǎn)單實(shí)則棘手的需求:**在 DataGridView 中添加按鈕列,并根據(jù)業(yè)務(wù)邏輯動(dòng)態(tài)控制按鈕是否"可點(diǎn)擊"**。

傳統(tǒng)方案的困擾

面對(duì)這個(gè)需求,我本能地打開了搜索引擎,一頓 Ctrl + C / Ctrl + V,結(jié)果發(fā)現(xiàn):

  • 有的建議重寫 DataGridViewButtonColumn;

  • 有的推薦自定義控件;

  • 還有大佬祭出 DataGridViewDisableButtonColumn 這種高階玩法。

說實(shí)話,看完之后我差點(diǎn)沒原地去世??——不是不行,而是太折騰!這些方法不僅實(shí)現(xiàn)起來(lái)復(fù)雜,維護(hù)成本也極高,尤其對(duì)于項(xiàng)目周期緊張、時(shí)間有限的小型項(xiàng)目來(lái)說,實(shí)在難以承受。

于是我陷入了沉思……

思路轉(zhuǎn)換:從"功能禁用"到"視覺禁用"

既然底層控制按鈕狀態(tài)這么難搞,那我們能不能換個(gè)思路?

用戶判斷一個(gè)按鈕是否"禁用",很多時(shí)候是靠視覺感知的。也就是說,只要按鈕看起來(lái)像是"被禁用了",用戶就不會(huì)去點(diǎn)它!

于是,我決定采用一種"視覺假禁用"的方式,來(lái)達(dá)到類似禁用的效果。

實(shí)現(xiàn)思路

使用 CellFormatting 事件模擬禁用樣式

我們可以通過 DataGridView.CellFormatting 事件,在特定條件下對(duì)按鈕單元格進(jìn)行樣式渲染,讓它看起來(lái)像"被禁用了"。

具體做法如下:

1、監(jiān)聽 CellFormatting 事件;

2、判斷當(dāng)前是否滿足禁用條件;

3、如果滿足,則將該按鈕單元格的字體顏色、背景色等樣式設(shè)置為"灰色系",模擬禁用效果。

代碼如下:

private void dgvCh_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (e.RowIndex >= 0 && e.ColumnIndex == 15)
    {
        DataGridViewCell cell = dgvCh.Rows[e.RowIndex].Cells[e.ColumnIndex];
        DataGridViewCell cell2 = dgvCh.Rows[e.RowIndex].Cells[e.ColumnIndex + 1];

        if (cell2.Value != null && cell2.Value.ToString().ToUpper() == "FALSE")
        {
            cell.Style.BackColor = Color.LightGray; // 設(shè)置按鈕背景色
            cell.Style.ForeColor = Color.DarkGray;  // 設(shè)置按鈕字體顏色
            cell.Style.SelectionBackColor = Color.LightGray; // 設(shè)置選中背景色
            cell.Style.SelectionForeColor = Color.DarkGray;  // 設(shè)置選中字體顏色
        }
    }
}

注意:這里假設(shè)第 16 列(索引為15)是按鈕列,第 17 列(索引為16)用于判斷是否禁用。

看一下效果

?

在點(diǎn)擊事件中加一層邏輯判斷

雖然樣式已經(jīng)"看起來(lái)"禁用了,但為了防止用戶誤操作,我們?cè)?nbsp;CellContentClick 事件中再加一層邏輯判斷:

private void dgvCh_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.RowIndex >= 0 && e.ColumnIndex == 15)
    {
        DataGridViewRow DGVR = dgvCh.CurrentRow;
        if (DGVR.Cells[16].Value != null && DGVR.Cells[16].Value.ToString().ToUpper() == "TRUE")
        {
            // 執(zhí)行上傳文件等實(shí)際邏輯
        }
    }
}

這樣一來(lái),即使用戶點(diǎn)了"灰掉"的按鈕,也不會(huì)觸發(fā)任何操作。

效果展示

通過上述處理,最終實(shí)現(xiàn)了如下效果:

  • 符合條件的按鈕列顯示為灰色,仿佛"被禁用了";

  • 用戶看到后自然不會(huì)點(diǎn)擊;

  • 即使誤點(diǎn),也會(huì)在點(diǎn)擊事件中被攔截,避免執(zhí)行錯(cuò)誤邏輯。

就這樣,按鈕雖然還能點(diǎn)擊,但你一看它那副灰頭土臉的樣子,誰(shuí)還會(huì)點(diǎn)它?

總結(jié):換種思路,輕松解決問題

這波操作,說復(fù)雜不復(fù)雜,說簡(jiǎn)單也不簡(jiǎn)單。關(guān)鍵在于換個(gè)角度思考問題 —— 不去和控件死磕底層,而是用一套"演技 + 判斷"的組合拳,達(dá)到了視覺與交互上的"類禁用"效果。

對(duì)于中小型項(xiàng)目或時(shí)間緊迫的場(chǎng)景,這種"視覺禁用"的方式不失為一種實(shí)用又高效的解決方案。

結(jié)語(yǔ)

人生就像按鈕,有時(shí)得假裝自己壞了。

如果你也被這個(gè)問題困擾過,希望這篇文章能幫你少掉幾根頭發(fā)

如果這個(gè)方法剛好幫到了你,不如點(diǎn)個(gè)贊讓我也"看起來(lái)像被鼓勵(lì)過"吧!

關(guān)鍵詞: #WinForm、#DataGridView、#按鈕禁用、#視覺禁用、#CellFormatting、#CellContentClick#UI優(yōu)化、#交互設(shè)計(jì)#C#、#工業(yè)軟件開發(fā)。

最后
如果你覺得這篇文章對(duì)你有幫助,不妨點(diǎn)個(gè)贊支持一下!你的支持是我繼續(xù)分享知識(shí)的動(dòng)力。如果有任何疑問或需要進(jìn)一步的幫助,歡迎隨時(shí)留言。也可以加入微信公眾號(hào)[DotNet技術(shù)匠] 社區(qū),與其他熱愛技術(shù)的同行一起交流心得,共同成長(zhǎng)!

作者: feisir

出處:cnblogs.com/feisir/articles/18888893
聲明:網(wǎng)絡(luò)內(nèi)容,僅供學(xué)習(xí),尊重版權(quán),侵權(quán)速刪,歉意致謝!


該文章在 2025/6/23 14:22:18 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved