1

私はwinformを使用しています。

ほぼ完成したアプリケーションを作成しました。次のことを考慮してください: 2 つのフォームがあります。最初のフォームはアプリケーションの起動時に開始され、2 番目のフォームは最初のフォームのすぐ隣で開く必要があります。

例:

形状衝突

2 番目のフォームで最初のフォームの場所にアクセスするにはどうすればよいですか? "this" を 2 番目のフォームのコンストラクターに送信する必要がありますか?

編集

次のコードは私を助けました:

private void changelogToolStripMenuItem_Click(object sender, EventArgs e)
{
     if (_changelog.IsDisposed)
     {
            _changelog = new Changelog();
     }
            _changelog.Location = new Point((Left + Width), Top);
            _changelog.Show();
}
4

2 に答える 2

3

コンストラクターを設計する際の基本的なルール: コンストラクターに不必要な情報を渡さない。

したがって、ここで必要なのは他のウィンドウではなく、その位置です。さらに良いことに、新しいウィンドウを配置する位置が必要です。

これは、2 番目のフォームに最初のフォームを知らせるべきではないことを意味します。代わりに、コンストラクターは次のいずれかを取る必要があります。

  1. 1 つのパラメーターPoint location
  2. 2 つのパラメータint x, int y

あなたの好みに応じて。もちろん、両方のコンストラクターを持つことができます (すべきですPoint location) int x, int y

これがすべて言われているので、読んだことは忘れてください。コンストラクターをまったく使用するよりも、2 番目のフォームを作成するときにプロパティを手動で設定するだけで済みます。

SecondForm form = new SecondForm()
{
    Location = new Point(this.Right, this.Top)
};

これは別の言い方です:

SecondForm form = new SecondForm();
form.Location = new Point(this.Right, this.Top);
于 2013-05-03T11:44:10.173 に答える