Toon posts:

[VB.NET 2005] disable resizing MDI Parent

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een MDI parent scherm met allerlei MDI childs. Nu wil ik dat het MDI parent scherm niet te resizen is, alleen te minimaliseren. Ik heb de maximumbox op false gezet, dan is het maximize icoontje weg. De borderstyle van het fomulier is fixed single. Nu blijft er nog steeds een mogelijkheid om het formulier te verkleinen, door te dubbel klikken op de bovenste toolbar. Heeft iemand enig idee hoe je dat kan voorkomen ? Ik krijg heel weinig tot geen hits op google. Zelfs met de controlbox op false kan je hem nog verkleinen door te dubbelklikken op de toolbar.
Ik heb geprobeerd door op het event mdi_resize te forceren dat ie weer maximaliseerd. Behalve dat je hierbij ziet dat ie kleiner en weer groot wordt wat niet mooi is, doet ie dat ook bij minimaliseren.
Ik hoop dat iemand een oplossing hiervoor weet want ik kom er niet uit.

Verwijderd

Topicstarter
ik heb misschien iets gevonden:
alleen vb.net herkent die pointapi en rect niet.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
Public Declare Function GetWindowPlacement Lib "User32" (ByVal hWnd As Integer, ByRef lpwndpl As WINDOWPLACEMENT) As Integer

Public WPL As WINDOWPLACEMENT

    Structure WINDOWPLACEMENT
        Dim Length As Integer
        Dim flags As Integer
        Dim ShowCmd As Integer
        Dim ptMinPosition As POINTAPI
        Dim ptMaxPosition As POINTAPI
        Dim rcNormalPosition As RECT
    End Structure

Ik hoop dat iemand mij kan helpen hiermee

Verwijderd

Topicstarter
ik heb die maximizebox weer op true gezet, anders zou je hem nooit uit de minimize stand kunnen halen. Ik heb inmiddels een oplossing, toch met die resize. Misschien niet zo netjes maar wel effectief:
Visual Basic .NET:
1
2
3
4
5
    Private Sub MDI_1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        If Not Me.WindowState = FormWindowState.Minimized Then
            Me.WindowState = FormWindowState.Maximized
        End If
    End Sub

Ik sta nog steeds open voor nettere oplossingen

  • Monkeybrains
  • Registratie: Juni 2001
  • Laatst online: 09:37
Volgens mij moet je (ik kan het nu even niet testen) de properties minimum size en maximum size van je form (staan default op 0, 0 dacht ik) gelijk maken aan de gewenste grootte van je form.

[ Voor 1% gewijzigd door Monkeybrains op 16-04-2007 12:28 . Reden: typo ]


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Wat Monkeybrains hierboven zegt is the way to go. Die properties zijn er tenslotte voor uitgevonden

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
MTWZZ schreef op maandag 16 april 2007 @ 12:37:
Wat Monkeybrains hierboven zegt is the way to go. Die properties zijn er tenslotte voor uitgevonden
Ja dat weet ik maar niet iedereen heeft dezelfde scherm resolutie, dus dat werkt niet

  • Monkeybrains
  • Registratie: Juni 2001
  • Laatst online: 09:37
Tja, dan blijven er maar weinig opties over:
1. Je zet de form size op een fixed size (bijvoorbeeld 1024x768) en geeft aan bij de klant/gebruikers dat de minimale scherm grootte is.
2. Een functie maken die bij het opstarten van de applicatie de scherm resolutie bepaald en aan de hand daarvan de form size zet.

(damn, sneller leren typen)

[ Voor 6% gewijzigd door Monkeybrains op 16-04-2007 13:02 ]


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Jawel hoor maar je moet wat truken.
Wat je kunt doen is in het Load event te kijken naar hoe groot de Working Area (niet de screen size) is van de client en dan je form resizen naar die grootte en vervolgens MinSize / MaxSize properties zetten.

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
MTWZZ schreef op maandag 16 april 2007 @ 13:01:
Jawel hoor maar je moet wat truken.
Wat je kunt doen is in het Load event te kijken naar hoe groot de Working Area (niet de screen size) is van de client en dan je form resizen naar die grootte en vervolgens MinSize / MaxSize properties zetten.
Ja dat is een mogelijkheid, is dan minimaliseren nog wel mogelijk ?

  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Uiteraard, je zorgt er alleen voor dat je window niet resizable is.
Zoiets:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
private void Form1_Load(object sender, EventArgs e)
{
    this.StartPosition = FormStartPosition.Manual;

    Rectangle bounds = Screen.PrimaryScreen.WorkingArea;

    this.MinimumSize = new Size(bounds.Width, bounds.Height);
    this.MaximumSize = new Size(bounds.Width, bounds.Height);

    this.Location = new Point(0, 0);

    this.MaximizeBox = false;
}


Het enige waar je je dan nog zorgen over hoeft te maken is dat het venster nog wel gewoon versleept kan worden.

[ Voor 4% gewijzigd door MTWZZ op 16-04-2007 14:19 ]

Nu met Land Rover Series 3 en Defender 90


Verwijderd

Topicstarter
Ja precies en hij is niet te minimaliseren, 2 nadelen. Vooral dat minimaliseren is wel gewoon de bedoeling. Ik denk dat er dan niet echt een betere oplossing is als diegene die ik heb. In ieder geval bedankt voor de tip, ik zal hem onthouden als ik hem misschien een volgende keer nodig heb. :)
Pagina: 1