10

forms私は 2 、メインウィンドウ、および 2 番目のアプリを持っていますForm

私が望むのは、Formabutton clickで 2 番目を開くことであり、その場所はメイン フォームのすぐ横にある必要があります(したがって、メイン フォームが600px広い場合X、新しいFormは になりますmain.X + 600)

これを試してみましたが、うまくいかないようです。まだメインフォームの上に開きます:

private void button1_Click(object sender, EventArgs e)
{
    var form = new SecondForm();
    var main = this.Location;
    form.Location = new Point((main.X + 600), main.Y);
    form.Show(); 
}

Location正しい属性ではありませんか?

4

3 に答える 3

16

フォームStartPositionを に設定しますFormStartPosition.Manual。デザイナーまたはコンストラクターから実行できます。

StartPosition = FormStartPosition.Manual;
于 2013-01-12T17:54:29.013 に答える
5

明らかに、StartPosition プロパティを当てにしていませんでした。ただし、手動に変更することは正しい修正ではありません。ロードした 2 番目のフォームは、ビデオ DPI 設定が異なる別のマシンで再スケーリングされる可能性があります。最近は非常に一般的です。次に、その Location プロパティを変更できます。

適切な方法は、Load イベントが発生するのを待つことです。それまでに再スケーリングが行われ、ウィンドウはまだ表示されません。適切な場所に移動するのに最適な時期です。StartPosition はもはや重要ではありません。このような:

        var frm = new SecondForm();
        frm.Load += delegate {
            frm.Location = new Point(this.Right, this.Top);
        };
        frm.Show();
于 2013-01-12T18:38:03.487 に答える
4

Locationは正しいプロパティですが、設定する必要があります

Form.StartPosition = FormStartPosition.Manual;

それも。

于 2013-01-12T17:54:45.943 に答える