Jag har lite problem med en form som har CenterParent som StartPosition. Den vill helt enkelt inte centrera sig på ägarformen, utan den lägger sig som ett standardfönster, dvs första gången så kommer den högt upp till vänster och för varje gång man öppnar så flyttar den sig lite ner mot höger. Det hjälper inte. Just den där formen är skapad i ett annat projekt och nu har jag importerat den till det nya projektet. Kan det på nått sätt ha med problemet att göra? Jag har inte, vad jag vet, flera trådar i mitt program. Jag har då inte använt mig av System.Threading. Använder du några asynkrona funktioner? De skapar automatiskt trådar. Det enda jag möjligtvis skulle kunna tänka mig är några timers som jag har, men med tanke på att hela programmet hakar upp sig när timern kör så känns det inte som att det skulle vara en separat tråd. Nej, det skulle i så fall vara om timer-intervall-eventet som triggas visar fönstret. Vad händer om du gör det manuellt? Formen visas inte från timern. Jag har testat att skapa ett nytt projekt som innehåller 2 former och en knapp på Form1 som innehåller: Är det exakt koden som ovan, eller har du laggt till me i anropet/satt parent? CenterParent fungerar bara på MDI-fönster. <b>Är det exakt koden som ovan, eller har du laggt till me i anropet/satt parent?</b> <b>CenterParent fungerar bara på MDI-fönster.</b> Det stämmer inte, CenterParent fungerar på "vanliga" formulär. Åtminstone när man använder ShowDialog(). Kom på nu att det kanske krävs? Testa att köra "NewForm.ShowDialog()" och se om det är någon skillnad. Jo, jag upptäckte det. MDI är väl när man har ett huvudfönster och flera underfönster (MDIchild), så därför blev jag lite fundersam när ShowDialog faktiskt gjorde så att CenterParent fungerade. <b>MDI är väl när man har ett huvudfönster och flera underfönster (MDIchild)</b>CenterParent
Jag öppnar formen med "NewForm.Show(Me)".
ThomasSv:CenterParent
Edit: Nya formar beter sig lika. Jag förstår inte vad jag gör för fel...
ThomasSv:CenterParent
ThomasSv: CenterParent
Vad har du för kod?Sv:CenterParent
(Jag har för övrigt funderat på att lägga in det som körs i timern i en egen tråd, men det är ett senare problem)
Nu tror jag som sagt inte vara ett tråd-problem, men om jag hade andra trådar i programmet så borde väl inte fönster-öppnandet påverkas när den ligger i en helt annan del av programmet där System.Threading inte används?
ThomasSv: CenterParent
Sv:CenterParent
Kan du komma åt t.ex. Form1.Top och har den rätt värde.
Form2.Top = Form1.Top + Form1.Height / 2 - Form2.Height / 2
Form2.Left = Form1.Left + Form1.Width / 2 - Form2.Width / 2Sv: CenterParent
Jag testade att göra en egen sub som skulle centrera formen och kallade på den före Form.Show och det fungerade. Vad som däremot var skumt var att storleken på formen också ändrades, men bara på höjden.
Din kod ger precis samma resultat.
ThomasSv: CenterParent
<code>
Dim F2 As New Form2
F2.Show()
</code>
Samma resultat som vanligt, formen centreras inte och storleken blir mindre. Form2 är givetvis inställd på CenterParent.
ThomasSv:CenterParent
Sv: CenterParent
Koden jag gav fungerar men man måste sätta StartPosition till Manual.
Form2 form2 = new Form2();
form2.StartPosition = FormStartPosition.Manual;
form2.Top = this.Top + this.Height / 2 - form2.Height / 2;
form2.Left = this.Left + this.Width / 2 - form2.Width / 2;
form2.Show();
Sv:CenterParent
Jag har testat både med och utan Me.
<b>Koden jag gav fungerar men man måste sätta StartPosition till Manual.</b>
Som jag skrev så fungerade den bra, men Form2 ändrar storlek på höjden av nån anledning.
ThomasSv:CenterParent
Vad räknas som MDI-fönster?
ThomasSv: CenterParent
/JohanSv:CenterParent
Men man behövde väl inte visa formen modalt för att den skulle centreras i VB6?
ThomasSv: CenterParent
Japp!
/Johan