DOBON.NET DOBON.NETプログラミング掲示板過去ログ

フォームを位置を指定して表示したい。

環境/言語:[C# 1.1]
分類:[.NET]

こんにちは。

メインとなるフォームのテキストボックス(以下txt)のすぐ下にサブ(以下fs)になるフォームを表示したいのですが思った位置に表示されなくて困っています。

*fsにはfsのTopの位置を指定するSetTopプロパティとLeftの位置を指定するSetLeftプロパティがあります。

fs = new fs();
fs.SetTop = txt.Top + txt.Height;
fs.SetLeft= txt.Left;

fs.ShowDialog(this);

*fs ロードイベント

this.Top = _Top;
this.Left= _Left;

_Top には SetTopプロパティ _Left には SetLeftプロパティ を指定すると値が設定されるようになっています。


public int SetTop
{
    set{
          _Top = value;
       }
}

といった感じのコードを書いていますが、TopもLeftも若干上、左に表示されてしまいます。どのようにしたらtxtのすぐ下に表示できますでしょうか?
■No14848に返信(ほげさんの記事)
> といった感じのコードを書いていますが、TopもLeftも若干上、左に表示されてしまいます。

でしょうね。

    using (Form2 f2 = new Form2()) {
        f2.StartPosition = FormStartPosition.Manual;
        f2.Top = this.Top + this.textBox1.Top + this.textBox1.Height;
        f2.Left = this.Left + this.textBox1.Left + this.textBox1.Width;
        f2.ShowDialog();
    }

________________________________________________________
じゃんぬ - Microsoft MVP for Visual Developer C#
  C#, VB.NET 入門  http://jeanne.wankuma.com/
  じゃんぬねっと日誌 http://blogs.wankuma.com/jeanne/
■No14850に返信(じゃんぬねっとさんの記事)
> ■No14848に返信(ほげさんの記事)
>>といった感じのコードを書いていますが、TopもLeftも若干上、左に表示されてしまいます。
>
> でしょうね。
>
> using (Form2 f2 = new Form2()) {
> f2.StartPosition = FormStartPosition.Manual;
> f2.Top = this.Top + this.textBox1.Top + this.textBox1.Height;
> f2.Left = this.Left + this.textBox1.Left + this.textBox1.Width;
> f2.ShowDialog();
> }
>

こんにちは。
上記の方法も試してみたんですが、横はほぼ合うのですが縦はメインのフォームとちょうど同じ高さになってしまいます。
あ、書き忘れましたがメインのフォームはMdiフォームの子フォームなんですが
それが何か関係するのでしょうか?
■No14851に返信(ほげさんの記事)
> あ、書き忘れましたがメインのフォームはMdiフォームの子フォームなんですが
> それが何か関係するのでしょうか?

座標 X=0, Y=0 がどこになるのかを考えてみては如何でしょう?
(あとは、クライアント領域とか色々)

___________________________________________________________________________________
じゃんぬ - Microsoft MVP for Visual Developer C#
  C#, VB.NET 入門  http://jeanne.wankuma.com/
  じゃんぬねっと日誌 http://blogs.wankuma.com/jeanne/

DOBON.NET | プログラミング道 | プログラミング掲示板