2011-01-08 165 views
0

有誰知道爲什麼這個功能在Windows XP中不起作用。工作win7下窗體不透明窗口xp .net 2

public Form1() 
{ 
    InitializeComponent(); 
    double flt = double.Parse("0,55"); 
    ShowOpacity(flt); 
} 


private void ShowOpacity(double flt) 
{ 
    this.Opacity = flt; 
} 
+0

你能給我們提供一些關於你的環境的更多細節嗎?你在虛擬機中運行Windows XP嗎?哪一個?計算機有什麼樣的顯卡/驅動程序?在Windows XP下,這段代碼對我來說絕對有效。 –

+0

我在虛擬機中運行這段代碼。謝謝。 –

+0

這很可能是您的問題。我現在沒有方便測試的虛擬機,所以我不能肯定地說。其中一些可能具有足夠好的視頻驅動程序來支持此功能,但遠未得到保證 - 例如,已知分層窗口不能與終端服務器一起使用。預計它可以在真正的Windows XP客戶端上正常工作。 –

回答

2

如果我只是鍵入this.Opacity = .55;它工作正常。

虛擬機運行錯誤的系統區域設置,而不是荷蘭。這是我認爲你來自的地方。不幸的是,「0,55」是像美國這樣的位置字符串的有效值,逗號被視爲千位分隔符。 Parse語句的結果是55,一個值,不透明度屬性靜默地截斷爲1而不引發異常。

控制面板+區域和語言選項,將您的機器切換到您的國家。檢查格式選項卡中的「十進制符號」設置,之後選擇高級以驗證它是逗號而不是句點。同時檢查設置的類型,你想要一個雙重的,而不是一個字符串。

+0

hans你是一個天才! –

0

罰款從MSDN - Form.Opacity

的Windows 2000,Windows 2000專業版,Windows 2000的服務器,Windows 2000高級服務器,Windows XP家庭版,Windows XP專業x64版,Windows Server 2003平臺注意:支持分層Windows API。該屬性對無法顯示分層窗口的平臺沒有影響。另外,某些顯示驅動程序不支持分層。

所以,這個問題很可能與您的顯示驅動程序。

+0

其中重要的部分是關於顯示驅動程序。如果您在XP虛擬機中運行此操作,那可能是您看不到透明度的原因。否則,它就是說在Windows XP中支持分層窗口(該屬性在封面下使用)*。 –

+0

是的,即時通訊在虛擬機上運行這個 –