天天看點

[VB.NET]點選窗體标題時出現的問題.

[VB.NET]點選窗體标題時出現的問題.

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

點選窗體标題時出現的問題.

不知道大家試過沒有。一旦你輕按兩下窗體的标題欄時,窗體的大小将發生改變,如何制止這個情況的出現?

__________________________________________________________________________

隐藏标題欄。

__________________________________________________________________________

代碼中加上

protected override void WndProc(ref Message m)

{

base.WndProc (ref m);

if(m.Msg == 0x84) //不讓拖動标題欄

{

if ((IntPtr)2 == m.Result)

m.Result = (IntPtr)1;

}

if(m.Msg==0x00A3) //輕按兩下标題欄無反應

m.WParam=System.IntPtr.Zero;

}

__________________________________________________________________________

樓上的方法我試了下

沒什麼效果

__________________________________________________________________________

難道.Net 無法直接截獲非客區消息?

__________________________________________________________________________

不清楚具體你想做成怎麼樣的,你的問題的話,我的了解就是把視窗的最大值跟最小值設定成固定值就行了啊。。随便怎麼點都不會有變化。。呵呵。。

__________________________________________________________________________

呵呵,第一個想到的也是樓上的方法, 把maximumSize跟size設成一樣的大小。

但是,這種方法還是響應了滑鼠的輕按兩下。輕按兩下後form會跑到左上角~

gz

__________________________________________________________________________

其實我是屏蔽過這個消息的,但是,我用了一個第三方的控件來美化窗體界面後,這個消息就不能屏蔽了,苦。

__________________________________________________________________________

WM_NCLBUTTONDBLCLK //0x00A3

這個消息可以屏蔽麼?

我試了下截獲不到(VS2005)

我機器有問題?

__________________________________________________________________________

設定form的MaximizeBox=false不就行了嗎

__________________________________________________________________________

把最大化的按鈕設定為False就行了.

或者設定FormBorderStyle為不可以改變大小的,比如:

this.FormBorderStyle = FormBorderStyle.FixedDialog

__________________________________________________________________________

你們自己試一下吧, 設成之後, 輕按兩下窗體标題的中間,呵呵,

__________________________________________________________________________

設定form的MaximizeBox=false完全可以啊(.Net005中試驗過了)。

但是僅僅設定this.FormBorderStyle = FormBorderStyle.FixedDialog好像不行耶

__________________________________________________________________________

1.設定 MaximizeBox = false;

2.

protected override void WndProc(ref Message m)

{

if (m.Msg == 0xA3)

return;

base.WndProc(ref m);

}

__________________________________________________________________________

是的,這個不是設定maxsize為false就可以做到的麼,還有什麼疑義麼

__________________________________________________________________________

我知道為什麼有些人說設定 MaximizeBox=false 就可以了。事實上應該說明的是,窗體在windowstate=Maximized的情況下,你輕按兩下窗體标題,你就會發現他跑回來了,如果你不處于Maximized狀态,他就不會有變化。

為什麼要讨論這個問題,那是因為很多情況下,作windows 應用程式,窗體的windowstate都是處于Maximized狀态的,而如果有哪個使用者用你的程式的時候,他輕按兩下了窗體标題,如果你的MaximizeBox=false的話,他就會現程式沒法用了。我也作為,在窗體大小變化的事件中強制windowstate=maximized,那樣的話,畫面會一閃一閃的,非常不專業。如果在慢的機器上用的話,實在是太醜。

__________________________________________________________________________

"代碼中加上

protected override void WndProc(ref Message m)

{

if(m.Msg == 0x84) //不讓拖動标題欄

{

if ((IntPtr)2 == m.Result)

m.Result = (IntPtr)1;

}

if(m.Msg==0x00A3) //輕按兩下标題欄無反應

m.WParam=System.IntPtr.Zero;

base.WndProc (ref m);

} "

base.WndProc (ref m);是不是應該放在後面?????????????

__________________________________________________________________________

Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

If m.Msg = &HA3 Then m.WParam = System.IntPtr.Zero

MyBase.WndProc(m)

End Sub

__________________________________________________________________________

繼續閱讀