- PR -

継承フォームのサイズ変更について

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-29 11:26
引用:

さかもとさんの書き込み (2006-05-29 10:08) より:

これはどのような面から良くないのでしょうか?お伺いできればと思います。


Location、Size のみならず、コントロールが消えたりと、
2002 時代から妙な動作が耐えないんですよ。
Visual Studio という IDE が、不得意なだけかもしれませんが。

継承するのであれば、せめて GUI 部分以外の機能のみにした方が良いです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2006-05-29 12:40
以前、こうして対応しました。

// ベースフォーム
public class BaseForm {
}

// 継承フォーム
public class Form1 : BaseForm {

 // イニシャライザ
 static Form1() {
  // ベースフォームのインスタンスを作成し、サイズを取得
  BaseForm frm = new BaseForm();
  s_OriginalSize = frm.Size;
  frm.Dispose();
 }

 private static Size s_OriginalSize;

 public Form1() {
  InitialiseCompornent();
  this.Size = s_OriginalSize;
 }

}

ちょっと前になるので記憶はあいまいなのですが、
継承フォームを初めて作成するときにベースフォームを作成して必要な値を取得します。
値のセットは、Load で行っていたかもしれません。

囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-05-29 12:50
それだったらこの方がいいかもしれません。
コード:
public class Form1 : BaseForm
{
	private Size _baseSize;

	public Form1()
	{
		_baseSize = Size;
		InitialiseCompornent();
		Size = _baseSize;
	}
}


必要のないフォームのインスタンスを作るのは、あまりお勧めできませんね。
_________________
囚人のジレンマな日々
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2006-05-29 13:07
さかもとです。

じゃんぬねっと様、
なるほど、そういう面でしたか(笑)
「継承フォーム」デザイン面で使えないのは業務アプリでは結構厳しいかもですね・・・。

masa様
なるほど、こういうことも出来るのですね、囚人様がおっしゃる部分と合わせて参考にさせて頂きます。

ありがとうございました。
masa
大ベテラン
会議室デビュー日: 2004/10/28
投稿数: 161
投稿日時: 2006-05-29 13:08
そういえばそうですね。

フォームに限らずカスタムコントロールのプロパティなんかも、
途中で初期値を変更して!ってなると大変ですよね。

属性つけておいてデザイナがコードを書かないように、とか気を使います。

たいてい後で気がつく。。。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2006-05-29 23:34
引用:

さかもとさんの書き込み (2006-05-29 13:07) より:

「継承フォーム」デザイン面で使えないのは業務アプリでは結構厳しいかもですね・・・。


僕も業務アプリで似たようなデザインのフォームを大量に書くとき、ベースフォームクラスを作って大量に派生させる人なので、お気持ちはよくわかります。

そういうことであれば、多少面倒くさくてもベースクラスのみでサイズを指定できるようにして、継承クラス側からサイズの変更ができないように細工する方が良いかもしれません。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-30 07:49
引用:

さかもとさんの書き込み (2006-05-29 13:07) より:

「継承フォーム」デザイン面で使えないのは業務アプリでは結構厳しいかもですね・・・。


そうなんでしょうか? (;^-^)
私も、勘定系・業務系プログラマですが、そこまでして継承する必要があるように思えません。

たとえば、検索フォームのような類は 1 つだけあれば良いですよね?
おそらく、そういう類ではなく、各業務ごとの画面の一部を統一させたいのだと思います。
もしそうであれば、共通になるものをユーザーコントロールにして貼れば良いでしょう。

実装はともかく、継承は "ガン" になり得るので、継承で「ガンガンいこうぜ」は一考の余地アリでしょう。
もしやるにしても、InitializeComponent は避けるように書きたいところです。

また、基底フォームに SPREAD などを貼って、リソースを剥がされて大後悔しないようにしたいです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2006-05-30 09:24
さかもとと申します。

引用:

じゃんぬねっとさんの書き込み (2006-05-30 07:49) より:

たとえば、検索フォームのような類は 1 つだけあれば良いですよね?
おそらく、そういう類ではなく、各業務ごとの画面の一部を統一させたいのだと思います。




今回、サイズとしてこだわったのは以下の経緯がありまして・・・。

1:開発開始当初にクライアントのディスプレイ型が決まっていなかった(17インチか15インチか)

2:取り合えず15インチ用で画面のレイアウトを設計して作っていたら結局17インチになってしまった。

3:17インチにぴったりと合うサイズに画面を変更したい(最大化表示ではなく)

そこで最初に継承フォームを利用しておき、サイズを何とか・・・という質問になりました。もちろん、このケースは「先に仕様決めとけ」とか「画面サイズに縛られる作り方をするのが悪い」とか「今後ディスプレイ変わったらまた作り直す気?」という意見はあるかと思いますが・・・それは置いておいての質問でした(笑)

どちらにしても、作り方を考え直したいと思います。
IDEの問題などで後でひどい目に会うと恐ろしいので・・・。

ありがとうございました。

それと、この話の流れから生まれた疑問ですが、別スレッド(別会議室)のほうが適切だと思い、そちらに新しく質問をさせて頂きました。

勘定系・業務系アプリの画面構成・推移について

スキルアップ/キャリアアップ(JOB@IT)