- PR -

くだらない質問ですが・・

1
投稿者投稿内容
eno
常連さん
会議室デビュー日: 2008/08/22
投稿数: 28
お住まい・勤務地: 代々木上原
投稿日時: 2008-08-29 13:40
this.Load += new System.EventHandler(this.MainForm_Load);
this.Activated += new System.EventHandler(this.MainForm_Activated);

どっち使ったほうが正しいんでしょうか?


}

private void MainForm_Activated(object sender, System.EventArgs e)
{
if (firstActive)
{
return;
}
firstActive = true;

if( ! DsUtils.IsCorrectDirectXVersion() )
{
MessageBox.Show( this, "DirectX 8.1 NOT installed!", "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );
this.Close(); return;
}
}
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-08-29 13:57
別に "くだらない質問" だなんて思いませんが、件名には概要を記して頂けるとありがたいです。

引用:

enoさんの書き込み (2008-08-29 13:40) より:

this.Load += new System.EventHandler(this.MainForm_Load);
this.Activated += new System.EventHandler(this.MainForm_Activated);

どっち使ったほうが正しいんでしょうか?


それぞれイベントが起きるタイミングが違いますので、何をするかによります (それにしても Shown イベントではなくて Activated イベントなのですね...)。

引用:

if( ! DsUtils.IsCorrectDirectXVersion() )
{
  MessageBox.Show( this, "DirectX 8.1 NOT installed!", "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );
  this.Close(); return;
}


この場合であればどちらのイベントも適切ではないですね。 検証の結果によって Form をすぐ閉じるくらいであれば、最初から Form のインスタンスを作成しない方が良いです。 Form のインスタンスを作成する前にチェック [wankuma.com] しましょう。 その結果 OK であれば Form のインスタンスを作成しましょう。

チェック内容が Form が表示された後でないと検証できないようなものは Shown イベントを使えば良いと思いますが、今回はその例ではないでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
eno
常連さん
会議室デビュー日: 2008/08/22
投稿数: 28
お住まい・勤務地: 代々木上原
投稿日時: 2008-08-29 15:17
なるほど、根本から間違っていました。Formを開いてから後のことしか目がいっておらず、program.csのMainのしょっぱなに、検証メソッド書いておけばすみますね。リンクのとおりのご指摘でした。

public static void Main()
{
bool chk1=chkver();
if (chk1 == false)
return;
Application.Run( new MainForm() );
}

static bool chkver(){
if( !DsUtils.IsCorrectDirectXVersion() )
{
MessageBox.Show( "DirectX 8.1 NOT installed!", "DirectShow.NET", MessageBoxButtons.OK, MessageBoxIcon.Stop );
return false;
}
return true;
}

1

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