2011-06-22 52 views
0

我的C#應用​​程序工作得很好,每當要求時都會保持最佳狀態。我面對的和想要的是:如何在表單上的任意位置單擊時激活表單?

假設我的應用程序是打開的,另一個應用程序(比如記事本)也打開了一半重疊我的應用程序窗口。當我們點擊記事本上的任何地方時,它就會被激活。而在我的應用程序中,我需要單擊窗口的頂部欄以使其處於活動狀態。爲什麼這樣 ?我想讓我的應用程序處於活動狀態,並在用戶點擊表單上的任何位置時顯示前面的內容,而不僅僅是頂部欄。

我需要設置或執行什麼來完成此操作?

+1

顯示您的代碼。 – Reniuz

+0

我沒有這個問題。創建新的簡單項目並與您的應用程序進行比較。或者給我們更多的細節 – Saint

+0

我創建了另一個項目,沒有任何形式,並嘗試了相同的情況。在點擊任何地方時,它就會在前面。你需要告訴什麼細節,將分享 - 我只是不明白應該放在這裏,因爲應用程序是一個巨大的。但會發布你需要的所有細節 - 給我一些想法。 – Tvd

回答

0

的問題是與overridding的WndProc。一條不必要的聲明被刪除,事情得到解決。感謝你們所有人的努力。

0

沒有什麼,如果你點擊一個窗口的任何地方,它會變得焦點併成爲最上面的窗口,除非另一個窗口是'永遠在上面'。

+0

Windows資源管理器&我的應用程序是開放且可見的,但Win Explorer與我的應用程序的一半屏幕重疊。 Win Exp有重點。我點擊我的應用程序表單(中間),從勝利的重點是失去了。單擊TAB組件不會集中在我的應用程序中(所以它沒有我相信的焦點)。當我點擊我的應用程序的標題欄時,它顯示在最上面,並且具有完全的焦點。現在,當我點擊我的應用程序(表單中間沒有放置任何組件)時,來自win exp的焦點將丟失,但我的項目也未完全激活。我如何使它激活,並像它通過按標題欄發生它前面。 – Tvd

+0

嗯,以上是通過點擊沒有組件的地方的場景。但是,如果我點擊我的應用程序compoents像圖片,標籤,框等,那麼它就像按標題欄正確行事。但是當在沒有組件的地方點擊時,它會有不同的反應。如何處理那些沒有組件和用戶點擊的地方,並且應用程序處於頂級位置? – Tvd

+0

要麼你寫了一些代碼來明確地阻止它來到屏幕的前端,或者你正在使用這樣做的組件或庫,或者在組件或庫中存在一個錯誤。 Windows的行爲並不像你描述的那樣。 –

1

嘗試做的是,在Form1_MousClick事件把這個代碼

bool top = this.TopMost; 
this.TopMost = true; 
this.TopMost = top; 
+0

TopMost僅設置爲默認值,即False。我添加了MouseClick事件並添加了上面的代碼「this.TopMost = True;」沒有工作。試用「this.BringToFront()」。也添加了一個MessageBox,但是這是永遠不會顯示 - 所以MouseClick沒有被解僱或被捕!嗯。 – Tvd

+0

嘗試隱藏表單並再次顯示,或者最小化並最大化它。 – Burimi

+0

千萬別寫此代碼。 –

相關問題