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

別フォームのサイズを取得したい

環境/言語:[c# Windows7]
分類:[.NET]

Formについてお教え下さい。

Form1とForm2があります。

Form1のインスタンスを作成します。Form2のインスタンスは作成していません。
この状態で、Form2のFormサイズを取得したいと思っています。

Visual StudioでForm2を作成してあり、そのサイズが100,100になっています。

そこで、Form2の方にプロパティを書きました。

public int PropetySizeWidth
{
get
{
return this.Size.Width;
}
}

public int PropetySizeHeight
{
get
{
return this.Size.Height;
}
}

Form1から上記のプロパティを参照してサイズを取得しようとしましたが、取得することができませんでした。何がおかしいでしょうか?
■No32487に返信(タケダさんの記事)
> Form1のインスタンスを作成します。Form2のインスタンスは作成していません。
> この状態で、Form2のFormサイズを取得したいと思っています。

インスタンスを作成してはいけないのですか?
インスタンスを作成すればプロパティを作成しなくてもいいと思いますが・・・。
■No32488に返信(エドさんの記事)
> インスタンスを作成すればプロパティを作成しなくてもいいと思いますが・・・。

そもそもインスタンスがなかったら、プロパティにもアクセスできませんが。
例示のプロパティ アクセサはインスタンス メンバですよね。

■No32487に返信(タケダさんの記事)

今ためせる環境がないので自信を持って回答できないのですが。
InitializeComponentメソッド内で設定されているなら、既出のとおりインスタンスから取得はできそうです。
GUI として表示しないと正しいサイズが取得できないのであれば、Opacitry を 100% などにして表示しないといけないかもしれません。
エドさん、Junostal さん

ご回答ありがとうございます。
インスタンスがなかったらプロパティにアクセスできないとは知りませんでした。勉強不足でした。
インスタンス作成後に無事にサイズを取得する事ができました。

InitializeComponentメソッド・・・私にはまだ敷居が高すぎるため、勉強のために調べてみたいと思います。

感謝感謝です。
解決済み!
■No32490に返信(Junostalさんの記事)
> そもそもインスタンスがなかったら、プロパティにもアクセスできませんが。
> 例示のプロパティ アクセサはインスタンス メンバですよね。

んー?
例示のプロパティアクセサでなくても問題ないって事です。

質問内容から読み取って、C#を勉強中かと思ったので
ズバリの答えじゃなく答えを途中書きしてヒント染みた回答をした次第です。
2014/07/24(Thu) 10:46:43 編集(投稿者)

# [解決済み] チェックを復活

■No32495に返信(エドさんの記事)
> んー?
> 例示のプロパティアクセサでなくても問題ないって事です。

その説明だけで書かれていたのならば、異議は書きませんでした。

■No32488に返信(エドさんの記事)
> インスタンスを作成してはいけないのですか?
> インスタンスを作成<strong>すれば</strong>プロパティを作成しなくてもいいと思いますが・・・。

インスタンスを作成“すれば”とありますね。

この言い回しだと下記のように言い換えることが可能で、
「インスタンスを作成しなくても、プロパティを作成すれば取得することも可能ではある」
というように聞こえてしまいます。

また不運にも、元質問者様が、

■No32487に返信(タケダさんの記事)
> > > Form2の<strong>インスタンスは作成していません。</strong>
> > > <strong>この状態で、Form2のFormサイズを取得したい</strong>と思っています。

と最初に記載しているので、受け手としては「インスタンスを作成しなくてもイケる方法がある」かのように聞こえてしまう恐れがあります。
不運にも「自然な話の流れ」として。

それで、自前のプロパティであろうと .NET Framework Library が用意したプロパティだろうと、インスタンスメンバなのですからインスタンスは必須ですという旨を突っ込んだつもりでした。
どうも私もうまく表現できていなかったようで、もうしわけないです。

■No32495に返信(エドさんの記事)
> 質問内容から読み取って、C#を勉強中かと思ったので
> ズバリの答えじゃなく答えを途中書きしてヒント染みた回答をした次第です。

ちょっとこの表明の意図に関してはよくわからなかったのですが、
内容の異議を唱えることはあっても、回答の姿勢に異議を唱える気はまったくございませんので、そこはご了承ください。

# エド氏の技術力は疑ってはおりません。結果的には言い回しだけ気になったというところでしょうか。
解決済み!
2014/07/25(Fri) 00:54:37 編集(投稿者)

■No32497に返信(Junostalさんの記事)

あー、言い回しね。

だけど、最初の私の投稿文章を読んで、文章の一部だけ強調して
わざわざ読み替える必要がありますか?

と言うか質問者がそんなひねくれた回答の読み方しますかね?

技術力云々は疑って当然です。ここは回答を求める場所じゃないでしょ?
回答になるかもしれない助言を求める場所であって回答があるとは限らない。

自分が知らない事を他人が知ってるかも知れないと言う姿勢で
教えられる事は教えて、教えて貰える事があれば教えて貰えば
いいんじゃないでしょうかね?


>InitializeComponentメソッド内で設定されているなら、既出のとおりインスタンスから取得はできそうです。
>GUI として表示しないと正しいサイズが取得できないのであれば、Opacitry を 100% などにして表示しないといけないかもしれません。

この文章の説明をお願いします。
解決済み!
2014/07/26(Sat) 01:34:08 編集(投稿者)

■No32501に返信(エドさんの記事)

「あー、言い回しね。」という言い方は、この掲示板ではルール違反です。面倒かもしれませんが、今後はできるだけ丁寧な言葉づかいでお願いいたします。

また、このスレッドの元々の質問はすでに解決されているにも関わらず、現在の話題は全く別の、言葉尻を捕らえただけの言い合いになっているように感じます。もしこのやり取りを続けるのであれば、この掲示板ではなく、「お気楽掲示板」の方でお願いいたします。

色々とうるさいことを言って申し訳ありませんが、ご協力をお願いいたします。

(編集により、解決済みにしました。)
解決済み!

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