こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C# Locationが移動できません

 質問させていただきます。どうぞよろしくお願いいたします。

 環境:VS2013 C#
    Win10
でございます。
 他の方が作られたプログラムの修正で悩んでおります。


 メインフォーム上のBtn2をクリックするイベント(下記)から
    private void Btn2_MouseClick(object sender, MouseEventArgs e)
    {
       showDlg();
下記コードを呼んでいるプログラムになります。(新しいフォーム(DLG)を表示)

 これにDLGのフォーム位置を変更する行を追加したのですが(←「ここ」の行です)、
なぜかDLGの表示位置は「ここ」の行を追加する前も後も挙動が変わらず
50,50付近や150,150付近に表示されます。(毎回異なります。)

    private void show_DLG()
    {
       MenuDlg DLG = new MenuDlg((ParameterInterface)this.Parent.Parent);
       MainForm.MenuDlgs.Add(DLG);
       DLG.Owner = null;
       DLG.Location = new Point(1100, 0); ←ここ
       DLG.Show(this);
    }

 もしかすると.Parent.Parentのフォームの場合、.Locationではフォーム位置を変更できないのでしょうか??
よく理解しておらず申し訳ございませんが、お詳しい方がいらっしゃいましたら
どうぞよろしくお願いいたします。

投稿日時 - 2019-11-28 01:25:13

QNo.9683984

困ってます

質問者が選んだベストアンサー

DLG.StartPosition = FormStartPosition.Manual;

投稿日時 - 2019-11-28 23:44:27

お礼

 【解決☆】
 どうもありがとうございます!!!!!m(_ _)m
>←ここ
の行を教えていただいたコードに書き換えてうまくいきました。

 デザイナのプロパティのStartPositionを
WindowsDefaultLocation →Manual
としても解決いたしました。m(_ _)m

 7~8時間くらい検索&頑張ってうまくいかなかったので非常に嬉しいです。
 この度はご閲覧&アドバイスいただきまして誠にありがとうございました!m(_ _)m

投稿日時 - 2019-11-29 02:24:25

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

Form2を作成しておいて、
下記のように位置指定して
ダイアログとして表示してはどうでしょうか。
private void Btn2_Click(object sender, EventArgs e)
  {
Form2 f2 = new Form2();
f2.Left = 1100;
f2.Top = 0;
f2.StartPosition = FormStartPosition.Manual;
f2.ShowDialog(this); //モーダルダイアログボックスとして表示
f2.Dispose(); //フォームを解放
}

投稿日時 - 2019-11-28 08:21:29

お礼

 ご回答いただき誠にありがとうございます。
「モーダル表示すると、メインフォームを触れず、また2つ目以降のDLGを開けない」という理解でよろしいでしょうか。
おそらくそれらを可能にするため(=DLGを何個も開けるようにする。DLG表示中にメインフォームを触れるようにする)に
このような仕様にしてくれているのだと思うのですが、
私もそのままのほうが良い次第です。

 どうぞよろしくお願いいたします。

投稿日時 - 2019-11-28 09:09:24

あなたにオススメの質問