アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

VisualStudioC#2010Expressにて、フォーム(A)を作成し、
そのフォーム(A)にShownイベントを取り付けます。
そして、そのフォームを継承したフォーム(B)を作ります。
すると、そのフォーム(B)のみ、実行時だけではなく、
VisualStudioでフォームのデザイン時に
そのフォームを開くと、VisualStudio内でもShownイベントが発生してしまいます。
(A)のフォームでは、この現象は起こりません。

下記のように、表示時に閉じるか否かの分岐をしておくと、
デザイナでも開いた瞬間にメッセージボックスが出て閉じてしまい、
二度と編集できなくなってしまいます。

はっきり言って迷惑です。

デザインしている途中でイベントが発生しないようにするには、
どうすればよいでしょうか。


よろしくお願いいたします。




フォーム(A) 継承元

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
private string a = null;

public Form1()
{
InitializeComponent();
}

private void Form1_Shown(object sender, EventArgs e)
{
if (a == null)
{
MessageBox.Show("aが設定されていません。");
this.Close();
}

}
}
}


フォーム(B) 継承先

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
public class Class1 : Form1
{
}
}

「VSC#Epressで、FormのSho」の質問画像

A 回答 (1件)

Shownイベントの最初に以下のコードを挿入してください。


 if(this.DesignMode) return;

http://h-pg.blogspot.jp/2012/06/form-inherits-de …

この回答への補足

早速の回答、ありがとうございます。

そもそも、何でこんなことが起こるのでしょうか。
全てで起こるのならいざ知らず、継承したものだけに
発生するというのが、よくわかりません。

VisualStudioの本来の仕様なのですか?それとも
不具合かなんかなのでしょうか。

補足で構いませんので、ご回答いただければ幸いです。

補足日時:2013/08/22 12:00
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!