2010-06-08 2 views
1

Vista/Win7에서 XP 스타일을 사용할 수 있습니까? 그렇다면 단일 제어를 위해이를 수행 할 수 있습니까?Vista/Win7에서 XP 비주얼 스타일을 사용할 수 있습니까?

은 내가 SetWindowTheme을 사용하여 한 번에 시각적 스타일을 하나의 제어를 해제 할 수 있습니다 알고있다(). EnableVisualStyles 호출을 제거하여 전체 win forms 응용 프로그램의 시각적 스타일을 해제 할 수 있음을 알고 있습니다. 응용 프로그램에서이 오류 상태에 그것을 컨트롤을 사용하기 때문

물어 그 이유는 배경색이 빨간색으로 켜져 있습니다입니다. 응용 프로그램이 Vista/Win7에서 실행 중일 때 ComboBoxes에서는 작동하지 않습니다. 뒤 색상을 변경하면 실제 컨트롤이 아닌 드롭 다운 목록 만 변경됩니다.

나는 또한 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 Forms에는 이미 오류를 나타내는 좋은 방법이 있으며 ErrorProvider는이를 위해 설계되었습니다.

+0

는 응답 주셔서 감사합니다. 나는이 질문에 대한 답을 거의 추측했지만 내 선택에 무게를 둘 필요가있다. 내부 응용 프로그램이기 때문에 몇 가지 더 있습니다. – Tony

+0

답변으로 받아들입니다. 비록 내가 질문 한 것을 할 수있는 방법이있다 할지라도 여러 가지 이유로 정확하지 않고 더 많은 문제를 야기 할 것입니다. 전에 말했듯이, 옵션의 무게를 재는 것뿐입니다. 심지어 나쁜 생각조차도 잠깐 보일 필요가 있습니다. ;) – Tony

관련 문제