2009-06-15 6 views
32

Dies ist ein sehr triviales Problem, aber ich kann keinen Weg finden, es zu lösen. Es nervt mich, weil ich glaube, ich sollte die Antwort darauf wissen, aber ich suche entweder nach den falschen Begriffen oder nach den falschen Methoden und Eigenschaften.Wie kann ich den Speicherort eines Dialogfelds steuern, wenn ShowDialog zum Anzeigen verwendet wird?

Ich habe einen Konfigurationsdialog, der von zwei Orten aufgerufen wird.

Die erste ist von der Schaltfläche auf dem Formular, die ordnungsgemäß funktioniert - wie Sie es erwarten würden.

Die zweite ist aus einem Kontextmenü auf der NotifyIcon in der Taskleiste, aber hier erscheint es oben links auf dem Bildschirm. Im Idealfall möchte ich, dass es auf dem Hauptbildschirm oder in der Nähe des Systembereichs angezeigt wird.

  • Ich habe versucht, die Location Einstellung, aber dies scheint außer Kraft gesetzt zu werden, wenn dialog.ShowDialog() genannt wird.

  • Ich habe versucht, mit der dialog.ShowDialog(IWin32Window) Überladung, aber das schien nicht wie ich null als Fenstergriff übergeben.

  • Ich habe versucht mit dialog.Show() statt, aber (und das ist, wo ich falsch gehen könnte) Einstellung des Standortes scheint keine konsistenten Ergebnisse zu geben.

  • Ich habe sogar versucht, die dialog.Parent Eigenschaft zu setzen - die natürlich eine Ausnahme ausgelöst.

Ich weiß nur, dass ich gehe zu erkennen, dass die Antwort offensichtlich ist, wenn ich (hoffentlich) ein paar Antworten sehen, aber im Moment bin ich ganz fest.

Danke für die Antworten - ich vermutete, dass es offensichtlich war, aber wie immer hatte ich mich selbst dabei erwischt, auf den falschen Weg zu schauen. Noch nerviger ist, dass ich diese Eigenschaft auch vom Designer verwendet habe.

+1

Hatte das gleiche Problem. Für mich hat es funktioniert, um Location während Load-Ereignis festzulegen – TomB

Antwort

38

Sie können die Form.StartPosition-Eigenschaft auf FormStartPosition.Manual festlegen und dann die Form.Location-Eigenschaft auf den gewünschten Speicherort festlegen. Wenn Sie ShowDialog anrufen, sollte das Formular am gewünschten Ort angezeigt werden.

MyForm frm = new MyForm(); 
frm.StartPosition = FormStartPosition.Manual; 
frm.Location = new Point(10, 10); 
frm.ShowDialog(); 
+3

System.Drawing.Point ist der vollständige Name der Point-Klasse – Argeman

21

Ich nehme an, Sie verwenden ein Formular, in diesem Fall können Sie Form.StartPosition Enumeration verwenden. Sie können mehr darüber here und das Aufzählungsverhalten here finden.

4

Versuchen Sie die StartPosition-Eigenschaft für das Formular.

Verwandte Themen