Как сделать VB. NET MDI родительским полноэкранным (без максимизации)? - PullRequest
0 голосов
/ 13 марта 2020

Я думал, что это займет 5 минут. Потратил 3 часа и не разобрался в этом ...

У меня есть приложение MDI, и я хотел бы, чтобы пользователю было проще сделать его полноэкранным, не разворачивая его, поэтому я добавил Windows / Full Screen опцию меню и введите этот код для обработки:

    Me.Left = 0
    Me.Top = 0
    Me.Width = Screen.PrimaryScreen.WorkingArea.Width
    Me.Height = Screen.PrimaryScreen.WorkingArea.Height

Проблема в том, что это оставляет зазоры слева, снизу и справа. Верх - единственный край экрана, который работает как положено - прилегает к верху. Остальные оставляют около 1/8 "зазора до краев экрана и 1/8" от панели задач внизу.

Конечно, я мог бы выдумать это и жестко кодировать +10 (или что-то еще) к высоте и ширине, и -5 влево. Но это похоже на пометку (выдумку), и, возможно, не будет одинаковым для каждого монитора.

Я пробовал в манифесте осведомленность о DPI, но это не имело значения. Я также попробовал Screen.PrimaryScreen.Bounds и Screen.PrimaryScreen.WorkingArea.X / Y, но тоже без радости.

Это действительно не должно быть так сложно. Wth

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Я не совсем уверен, правильно ли я вас понял: вы не хотите, чтобы пользователь нажимал кнопку увеличения? Вместо этого вы пытаетесь предоставить свою собственную функцию «максимизации»?

Хорошо, звучит странно, но в любом случае:

Вы уже пробовали это:

Screen.PrimaryScreen.WindowState = FormWindowState.Maximized

(извините, скопировано из C# кода, если есть синтаксис хаос)

0 голосов
/ 13 марта 2020

Попробуйте это:

Dim diffW As Integer = Me.Width - Me.ClientSize.Width
Dim diffH As Integer = Me.Height - Me.ClientSize.Height

Me.ClientSize = New Size(Screen.PrimaryScreen.WorkingArea.Width, Screen.PrimaryScreen.WorkingArea.Height - diffH)
Me.Location = New Point(-diffW / 2, 0)
...