#.net #vb.net #winforms
#.net #vb.net #winforms
Вопрос:
Я хочу исправить положение дочерней формы mdi. чтобы никто не мог переместить ее из одного места в другое. Я пытаюсь реализовать следующий код, но он выдает ошибку для screen.width Вот мой код: — Поместите этот код в модуль:
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
Комментарии:
1. «это выдает ошибку для screen.width» В чем ошибка?
Ответ №1:
После того, как установлено начальное местоположение формы, вы можете запретить изменение положения формы с помощью переопределения метода WndProc формы и прослушивания сообщения Windows 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() amp; 0xfff0;
if (command == SC_MOVE)
return;
break;
}
base.WndProc(ref message);
}
Комментарии:
1. где в проекте вы бы разместили этот код, чтобы не допустить, чтобы дочерние формы MDI отображали местоположение. У меня есть формы, которые, когда они являются первой формой, вызываемой в MDI, выстраиваются в top = 0, но уже есть форма, открывающая показ в top = -8