有沒有什麼辦法讓窗體在被移動時變成半透明,然後在不再移動時變爲不透明?我試過Form_Move
事件,但沒有運氣。
我卡住了,有幫助嗎?C# - 使窗體移動時半透明
回答
表單加載爲半透明的原因是因爲表單必須移動到觸發Move事件的起始位置。您可以通過確定是否設置不透明度來確定表單是否已完全加載。
後一種形式已完成移動,所以這樣的事情應該工作的ResizeEnd事件觸發:
bool canMove = false;
private void Form1_Load(object sender, EventArgs e)
{
canMove = true;
}
private void Form1_Move(object sender, EventArgs e)
{
if (canMove)
{
this.Opacity = 0.5;
}
}
private void Form1_ResizeEnd(object sender, EventArgs e)
{
this.Opacity = 1;
}
好的!當用戶完成移動表單時,我不知道ResizeEnd被觸發。我注意到ResizeBegin在用戶開始移動表單時觸發,所以也許他可以使用這個而不是Form_Load/canMove/Form_Move技巧? – itowlson 2009-10-18 08:18:11
非常感謝!太棒了!我會更多地嘗試它。順便說一句,愛你的頭像鮑爾;)。 – user 2009-10-18 08:19:49
使用Windows鍵將窗口移動到屏幕上某個Tile位置時,有人遇到問題嗎? 例如,當我使用Windows + LeftKey時,表單保持不透明狀態,直到我再次手動調整它的大小後,它纔會重置爲正常狀態。 所以我做了什麼來解決這個問題是採取@itowlson的建議,並使用Form1_ResizeBegin而不是Form1_Move。這似乎是訣竅。 – 2015-12-21 19:03:59
要做到這一點正確我希望你需要重寫消息處理來響應標題欄被舉行等,但你可以作弊,只是使用一個計時器,讓你使它不透明的一個小而移動時,使連續動作作品:
[STAThread]
static void Main()
{
using (Form form = new Form())
using (Timer tmr = new Timer())
{
tmr.Interval = 500;
bool first = true;
tmr.Tick += delegate
{
tmr.Stop();
form.Opacity = 1;
};
form.Move += delegate
{
if (first) { first = false; return; }
tmr.Stop();
tmr.Start();
form.Opacity = 0.3;
};
Application.Run(form);
}
}
很明顯,你可以調整這個以淡入/淡出,等等 - 這是隻是爲了顯示整體概念。
- 1. C#WF半透明窗體
- 2. 半透明窗體形式
- 3. C++半透明窗口SDL
- 4. 使用VB6的半透明窗體
- 5. C#透明窗體
- 6. 使窗體半透明,以查看窗體的背景圖像
- 7. C#在移動窗體時淡入淡出透明度
- 8. C#設計透明窗體
- 9. Visual Studio 2010 - 半透明浮動窗口
- 10. 拖動不透明窗體?
- 11. 使窗體背景透明
- 12. 半透明窗口內的半透明JPopupMenu - 可選項?
- 13. 使UINavigationBar半透明
- 14. 如何使字體與Irrlicht半透明?
- 15. Winforms半透明PNG半透明PNG
- 16. 半透明的PictureBox c#
- 17. OpenGL的透明/半透明
- 18. xlib半透明窗口背景
- 19. 半透明AppWidget?
- 20. SherlockActionBar半透明
- 21. 半透明NSView
- 22. Windows窗體C中的透明度#
- 23. C#2窗體和不透明問題
- 24. 無法使我的活動窗口半透明
- 25. 使拖動圖像不透明,而不是半透明
- 26. 在wxwidgets中繪製半透明窗口
- 27. 窗體的透明背景(Windows窗體)
- 28. 非活動窗體上的透明層
- 29. 如何在Visual Basic中創建可移動的透明窗體?
- 30. 使背景半透明
您在Form_Move事件改變了Form.Opacity房產嗎? – gn22 2009-10-18 07:19:05
是的,但程序第一次運行時,它是半透明的。 – user 2009-10-18 07:27:38