2010-06-08 71 views
1

Vista/Win7中可以使用XP風格嗎?如果是的話,是否可以爲單一控制做到這一點。可能在Vista/Win7中使用XP視覺風格?

我知道我可以使用SetWindowTheme()一次關閉一個控件的視覺樣式。我知道可以通過刪除EnableVisualStyles調用來關閉整個win窗體應用程序的視覺樣式。

我問的原因是因爲在應用程序中這將被用於它在錯誤狀態控制它的backcolor變成紅色。當應用程序在Vista/Win7下運行時,這對ComboBoxes不起作用。改變背景顏色只會改變下拉列表而不是實際的控制。

我也研究過讓BackColor改變組合框的顏色,就像它在XP中一樣,當視覺樣式關閉時,卻發現無法輕鬆做到這一點。

是的,這將很容易解決在WPF ... /哭泣。 :)

回答

3

那麼,你已經知道如何做到這一點。

using System; 
using System.Windows.Forms; 
using System.Runtime.InteropServices; 

class MyComboBox : ComboBox { 
    protected override void OnHandleCreated(EventArgs e) { 
     base.OnHandleCreated(e); 
     SetWindowTheme(this.Handle, "", ""); 
    } 
    [DllImport("uxtheme.dll")] 
    private static extern int SetWindowTheme(IntPtr hWnd, string appname, string idlist); 
} 

不管你做什麼,它都會看起來是一個用戶,看到她的UI設計開啓了視覺樣式。並勾選一個有視覺障礙的東西,這可以讓你在美國被起訴。 Windows窗體已經有了一個很好的方式來表示錯誤,ErrorProvider被設計來做到這一點。

+0

謝謝你的回答。我非常想到這個問題的答案,但需要減輕我的選擇。由於它是一個內部應用程序,我還有更多。 – Tony 2010-06-08 20:12:38

+0

我接受這個答案。即使有一種方法可以解決我在問題中提出的問題,但由於多種原因,這種做法並不正確,並會導致更多問題出現。就像我之前說過的,只是權衡了選項。即使是不好的想法也需要偶爾看一下。 ;) – Tony 2010-06-10 18:41:31

相關問題