2017-07-04 23 views
0

我想disable整個Form但仍然保持每個這樣的Form像文本框,按鈕等元素看起來像enabled禁用窗體,但保持其每個元素看起來像啓用

所以,我想阻止對這些元素的用戶交互,但保留它的標準看,沒有變灰等

可以在一種自動的方式或一個完成只需要手動處理的EnabledChanged事件每個受影響的控件?

+1

您可以用透明圖像覆蓋表格 – NtFreX

+0

您可以將元素設置爲「只讀」模式。 – Komal

+0

@僅限於正文文本框 – NtFreX

回答

1

對於所有控件,「backcolor」屬性默認設置爲窗口。選擇它們全部並設置爲白色(或所需的顏色)以獲得相同的外觀。 您可能想對文字和邊框顏色做同樣的處理。它的所有關於您想要的定製級別。

要完全控制顏色,您需要重新繪製它們。

protected override void OnPaint (System.Windows.Forms.PaintEventArgs e) 
{ 
    if (Enabled) 
    { 
     //use normal realization 
     base.OnPaint (e); 
     return; 
    } 
    //custom drawing 
    using (Brush aBrush = new SolidBrush("YourCustomDisableColor")) 
    { 
     e.Graphics.DrawString(Text, Font, aBrush, ClientRectangle); 
    } 
} 
+0

好吧,通過窗體設計器,我手動將按鈕的'ForegroundColor'設置爲'White'和'BackgroundColor'爲'SteelBlue',當Form被禁用時,它仍然會將'ForegroundColor按鈕的。 'DataGridView'頭文件也是一樣的。 – pitersmx

+0

好的。是的,在這種情況下,您可能需要重新繪製所需顏色的文本。根據性能和複雜性,您需要分析哪些是可以接受的。我在答案中添加了相同的代碼。 – Harsh

+0

@謝謝你的回答,遺憾的是它仍然需要覆蓋這種形式的每個控件的繪製方法。 – pitersmx

0

最簡單的解決辦法是對所有控件的頂部透明的形象,你只是表明它,當您希望禁用的控件。

此圖像將捕獲所有鼠標輸入,但仍有可能通過鍵盤選擇控件。

+0

這個圖像應該放在一個'pictureBox'例如?當表單被禁用時,我應該在頂部顯示這個'pictureBox'? – pitersmx

+0

正好。我會捕獲所有的鼠標輸入。但可能是您仍然可以使用鍵盤選擇背景中的控件。 – NtFreX

相關問題