2016-10-16 3 views
0

mdiの子フォームの位置を修正したい。誰も1つの場所から別の場所に移動することはできません。 私のコードがある私は、次のコードを実装しようとするが、それは私にここscreen.width のエラーを与える: - モジュールで 置き、このコード:子どものフォームのLoadイベントになりましたmdichildフォームの移動/再配置を防ぐ方法

public Sub CenterMe(Myform as Form) 
    with Myform 
     Myform.Left = (Screen.Width - .Width)/2 
     Myform.Top = (Screen.Height - .Height)/2 ' - mdiMain.StatusBar.Height 
    End With 
End Sub 

- コールこのようなこと:

Private Sub Form_Load() 
    'do some initialization stuff... 
    '... 
    Call CenterMe(me) 
End Sub 
+0

「これは私にscreen.widthのエラーを与えます」エラーは何ですか? – ChrisF

答えて

0

フォームの初期位置が設定されると、フォームの位置をオーバーライドフォームのWndProcメソッドを介して変更することを防止し、このようなWM_MOVEウィンドウメッセージを聞くことができます。

protected override void WndProc(ref Message message) 
{ 
    const int WM_SYSCOMMAND = 0x0112; 
    const int SC_MOVE = 0xF010; 

    switch (message.Msg) 
    { 
     case WM_SYSCOMMAND: 
      int command = message.WParam.ToInt32() & 0xfff0; 
      if (command == SC_MOVE) 
       return; 
      break; 
    } 

    base.WndProc(ref message); 
} 
関連する問題