• 締切済み

Visual C# 2008 EE デザインビューエラー

Visual C# 2008 EE デザインビューエラー お世話になっております。 ASP ではないのですが、C# に関する件のため、こちらに投稿させていただきました。 【環境】  Visual C# 2008 Express Edition  .NET Framework 3.5 【現象】  コントロールをデザインビューで開いた際に、Visual C# がエラーで強制終了してしまう。  ※参照:添付ファイル「visualC#_error.jpg」 【詳細】  BasePage.cs → public partial class BasePage : UserControl  IndexPage.cs → public partial class IndexPage : BasePage  このように、UserControl を継承した BasePage クラスと、そのクラスを継承した IndexPage クラスが存在します。  このような関係で、IndexPage クラスをデザインビューで開いた際に、強制終了してしまいます。  IndexPage.cs のコードの表示を行ったり、BasePage クラスをデザインビューで開いた際には、強制終了せずに正常に動作します。  プロジェクト作成当初は、IndexPage クラスを開いても問題なくデザインビューが見れていました。いつごろからかこのような状態になってしまいました。  IndexPage クラスだけでなく、その他 BasePage クラスを継承しているクラスをデザインビューで確認すると強制終了してしまいます。 なにか心当たりのある方がいらっしゃいましたら、 ご教示よろしくお願いいたします。  

この投稿のマルチメディアは削除されているためご覧いただけません。

みんなの回答

回答No.2

> Windows のエラーダイアログには「system.typeinitialization」が表示されておりました。  これはクラスの初期化時に発生する例外なので、デザインビューで出てるということはクラス定義の中にデザインビューが解釈できない記述があると考えられます。  デザインビューの構文解析はどうもコンパイラに比べると性能が劣ってるようで、コンパイラが正常に通るコードでもエラーで開けなくなってしまうことがあるようです。 > 実際は別クラスで > public readonly static int XXXXX = ・・・ > と一旦定数定義したものを参照しています。  この定義をデザインビューが認識できてないという可能性が高そうなのですが。定義を用いずに直に記述した場合はどうでしょうか?

hatimiti
質問者

お礼

ご回答ありがとうございます。 現在試せる状況にないため、月曜日に再度試してみたいと思います。

hatimiti
質問者

補足

ご回答の件、直接以下のように定数を用いず記述してみましたが やはり子クラスをデザインビューで開いた際に強制終了してしまいました。 int x = int.Parse(ConfigurationManager.AppSettings["XXXXX"]); 開発中はコメント化しておくなどで対応しようかなと考えていますが、、、

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

IndexPage.csの中に複数のクラス定義があったりはしませんか? ユーザーコントロールは使ったことが無いのでわかりませんが、Form1.csなんかでForm1以外のクラスを定義してたりするとエラーでFormデザイナが開かなくなってしまいます。それと同じような状況かと。

hatimiti
質問者

お礼

ご回答ありがとうございます。 添付画像に問題があったので削除してしまいましたが、 一度削除すると、再アップロードできないようで、、、 ご回答の件、IndexPage.cs には 1 クラスしか定義しておりませんでした。 こちら、一度最初から基底クラス(BasePage)を作成しなおしつつ、 現状の BasePage クラスのどこが悪いかを 1 つ 1 つ確認いたしました。 そうすることで原因となる 1 行を特定することができました。 以下のような処理です。 protected void manipulationTimer_Tick(object sender, EventArgs e) { ・・・ int x = int.Parse(ConfigurationManager.AppSettings["XXXXX"]); ・・・ } manipulationTimer_Tick メソッドは、timer イベントとして BasePage クラスに定義しております。 このメソッド内で、App.config 内から定数を取得している箇所があることで、 今回のような現象が起きるようです。 (IndexPage をデザインビューで開いた際に、基底クラスである BasePage の manipulationTimer_Tick がチェックされ Visual C# 自体が落ちてしまう??) 添付画像には載せていたのですが、 Windows のエラーダイアログには「system.typeinitialization」が表示されておりました。 Timer イベントの内部で、App.config からの値を設定することは可能でしょうか? アプリケーション自体はこのソースコードで正常に動作するため、Visual C# 自体の動作なのでしょうが、、、

hatimiti
質問者

補足

int.Parse(ConfigurationManager.AppSettings["XXXXX"]); の部分は、毎回 timer イベントで読み込むのは無駄なので、 実際は別クラスで public readonly static int XXXXX = ・・・ と一旦定数定義したものを参照しています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • visual studioのデザイナ画面でエラーがでる

    visual studio 2008 express edition C#3.5 を使用しています。 新しい項目の追加からフォーム画面をそれぞれ 「Base.cs」 public partial class Base : Form { public Base(int i) { InitializeComponent(); } } 「CSharp.cs」 public partial class CSharp : Base { public CSharp(int i) : base(i) { } } とCSharpクラスはBaseクラスを継承させるようにしたいのですが、 上のように引数付きコンストラクタで記述すると 「型 'Test.Base' にコンストラクタが見つかりませんでした。 」 というエラーが出てデザイン画面が表示されなくなります・・・ 次のように 「Base.cs」 public partial class Base : Form { public Base() { InitializeComponent(); } public Base(int i) { InitializeComponent(); } } Baseクラスに引数なしのコンストラクタを追加すれば問題なくデザイン画面が表示されるのですが、 これはvisual studioだから起こるエラーなのでしょうか?

  • Microsoft Visual C++エラー

    IEを起動するとMicrosoft Visual C++ Runtime Library このようなエラーが出てIEが表示されず自動的に強制終了されてしまいます。 調べてみたところMicrosoft Visual C++ の古いバージョンをアンインストして新しいものを入れると直ると書いてあったのですが。試してみても直りませんでした。 IEのリセットもしたのですが変化はありません。 どなたか解決策に心当たりがあれば教えてくださいおねがいします><

  • C# フォームを追加するとエラー

    C# 勉強中の者です。Visual Studio 2008 を使用しています。 既に一つのフォームで実行できているプロジェクトがあり、[プロジェクト]-[Windows フォームの追加]から追加してフォームを2つにしてみようと思いましたが、以下エラーが出てしまいます。 <エラー内容> ファイル内にデザインできるクラスがないため、このファイルのデザイナを表示できませんでした。ファイルの以下のクラスがデザイナで見つかりました: Form2 --- 基本クラス 'System.Object' をデザインできません。 <このエラーのヘルプ> Visual Studio 内のクラスが、画面上でデザインできるクラスから継承されていないため、ファイルのデザイナを開けません。 どうすればフォームを追加することができるのでしょうか? よろしくお願いします。

  • 〔C#〕WPFのディープコピーをするには?

    オブジェクトのディープコピーは、以下のURLを参考にして作成しました。 http://d.hatena.ne.jp/tekk/20100131/1264913887 WPF(UserControl)で作成したViewに対して上記URLのDeepCopy()関数を実行すると、 実行時に次のエラーが出てしまいます。 「'System.Windows.UserControl'はシリアル化可能として設定されていません。」 調べますと、Sezializable属性を付ければ良いとあるのですが、 該当のWPF(xaml)のcsファイル(XXX.xaml.cs)のクラスの宣言の上に以下のように付けましたが、 変わらずエラーが出てしまいます。 [Serializable] public partical class XXX { ・・・ どのようにしたら、上記のエラーを解決し、Viewのディープコピーができるのでしょうか? とても困っています。 ご教授よろしくお願いいたします。

  • C#のカスタムコンポーネント

    初めて投稿します。 C#でカスタムコンポーネント(ユーザコントロール、Windowsフォームコントロールライブラリと呼ばれる?)を作りたいと考えています。 実際に作りたいのは、ツールボックス内のダイアログカテゴリー内にあるような、ダイアログのコントロールを作りたいです。このダイアログ関係のコントロールは、コンテナ上にドロップすると、コンテナ上にオブジェクトが配置されるのではなく、エリアの下にコントロール名が表示されますが、このようなダイアログコントロールを作りたいと思っています。 イメージが伝わるか分かりませんが、通常ユーザコントロールを生成すると、以下のようにスケルトンが作られますが、 public partial class UserControl1 : UserControl これを public partial class UserControl1 : Form のようにして、Formクラスのコントロールを作りたいのですが、作り方がわからず困っています。 いろいろ調べたのですが、この手のダイアログコントロール?に関する情報が見当たらないので、もしご存知の方がいらっしゃったら、書籍でも、URLでも良いので情報ください。 よろしくお願いします。

  • Visual-C#の event キーワードの「意義」が分かりません

    Visual-C#というものを初めて触っている者です。 フォーム上にボタン等のコントロールを配置して、ボタンをダブルクリックすると、イベントハンドラをユーザが記述するコード部分(partial class)が表示されてくるのですが(Form1.cs)、このpartial classの残りの、ユーザが編集する必要のないコードはForm1.Designer.cs内に自動生成されます。 このForm1.Designer.cs内に、たとえば this.Button1.Click += new System.EventHandler( this.Button1_Click );  ←(1) のようなコードが自動生成されているわけです。 ここで、Button1とはButtonクラスのオブジェクトであり、ClickとはButtonクラスの(Controlクラスから継承した)Clickイベントだということです。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.control.click(VS.85).aspx public event EventHandler Click  ←(2) ここで使用されているEventHandlerとは何かというと、delegateです。 http://msdn.microsoft.com/ja-jp/library/system.eventhandler.aspx public delegate void EventHandler(Object sender, EventArgs e)  ←(3) 「イベントとは、コンピュータ・プログラムの実行に際し、何らかのアクションが発生した際にプログラムに発信される信号(これをメッセージと呼んだりする)をいう。」(『ウィキペディア(Wikipedia)』) この「イベント」を、.NetFrameworkのクラスライブラリでは、(2)のように「EventHandler」という名前のデリゲートクラス型の変数として定義しているわけですが、(2)の中の「event」というキーワードの「意義」が分かりません。 Controlクラス定義内で(2)式のように、コントロールの「クリック」イベントを、「EventHandler」という名前のデリゲートクラス型の変数と定義するというのなら、それはそれで分かるのですが、なぜ更に「event」というキーワードを付ける必要があるのかが、よく分からないのです。

  • Visual Studio 2017 C#

    いつも大変お世話になっております。 下記C#コードをVisual 2017 C#で 実行したところ 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー CS0103 現在のコンテキストに 'ConsoleWrite' という名前は存在しません。 ClassLibrary1 C:\Users\kouzo\source\repos\ClassLibrary1\ClassLibrary1\Class1.cs 19 アクティブ 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー CS0163 コントロールはひとつの case ラベル ('case 1:') から別のラベルへ流れ落ちることはできません。 ClassLibrary1 C:\Users\kouzo\source\repos\ClassLibrary1\ClassLibrary1\Class1.cs 23 アクティブ というエラーが出て実行結果が出ません。 お忙しいところ恐縮ですが、どうかご回答のほどよろしくお願いします。 using System; namespace ClassLibrary1 { public class Class1 class Program { static void Main() { int a; for (a = 5; a <= 8; a++) { ConsoleWrite(a + "÷3=" + a / 3); switch (a % 3) { case 1: Console.WriteLine(":あまりは1です。"); case 2: Console.WriteLine(":あまりは2です。"); default: Console.WriteLine(":あまりは0です。"); break; } } } } }

  • visual C++ でビルドの中止ができません

    新しくc++を学ぼうと思い、簡単なプログラムを書いてビルドしました。 その際、ソースにエラーがあるとずっとビルド中になってしまい、ビルドの中止ボタンをいくら押しても中止できません。 visula C++自体を終了することもできず、今はタスクマネージャーからプロセスを選んで強制終了させています。 5分くらいほっといていても中止できないのはちょっとおかしいかなと思うのですが、私が短気なだけでしょうか? どなたか分かる方よろしくご回答お願いします。 因みにOSはWindows2000でvisual C++は6.0を使っています。

  • Visual C++でクラス編集

    Vista上で、MSVS2008EEのVisual C++を使っています。 http://www.microsoft.com/japan/msdn/vstudio/express/ サブスレッドを使用するWinアプリを作ってるのですが、ヘルプに書かれていることができなくて困っています。 ファイル-新規作成-プロジェクトで、CLRのWindowsフォームアプリケーションでプロジェクトを作りました。 フォームデザインで見た目を作った後、スレッドオブジェクトを使おうと、クラス追加をしました。 クラスビューをアクティブにして、プロジェクト-クラスの追加で、C++のC++クラスで名前を入力して追加しました。 ウィザードで、名前Work、基本クラスにThreadを入力して完了ボタンを押しました。 これでクラスビューに追加したクラスが表示されます。 ヘルプでは、メソッドの追加はクラス指定して右クリックのメニューから、とあるのですが、この表示されたものに対して行ってもメニューにそのような項目はありません。 それと、CLRのThreadを認識していない感じもしています。 というのは、クラスビューで階層を見ると、基本クラスのThreadに関する情報がまるでないからです。 何がおかしくて、どうすればいいのでしょうか。

  • (Visual C#)カスタムコントロールで作ったリストのプロパティを

    (Visual C#)カスタムコントロールで作ったリストのプロパティを.Items[i]で参照できるように したいです。 具体的に言うと、 Form1…フォームアプリケーション MyList…フォームコントロールライブラリ MyListItem…フォームコントロールライブラリ の3つのソリューションがあります。 Form1にはMyListをデザイナーで、 MyListにはFlowLayoutPanelがあり その中にMyListItemを入れるようにコードを組んであります。 MyList.sln - UserControl1.cs using 省略 namespace MyList { public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } public int Count = 0; public int SelectRow = -1; private MyListItem.MyListItem[] Mylistitem; private void Add (string URL, string Text, string ShowName, string Date){ Mylistitem[Count] = new MyListItem.MyListItem(); Mylistitem[Count].Text = Text + Count.ToString(); Mylistitem[Count].ImageURL = URL; Mylistitem[Count].ShowName = ShowName; Mylistitem[Count].Date = Date; Mylistitem[Count].Name = "MyListItem" + Count; Mylistitem[Count].Parent = this.flowLayoutPanel1; Mylistitem[Count].count = Count; this.Mylistitem[Count].Click += newEventHandler(this.MyListItem_Click); Count++; } private void button1_Click(object sender, EventArgs e) { Add("http://画像URL", "文字列1", "2", "3"); } private void UserControl1_Load(object sender, EventArgs e) { this.Mylistitem = new MyListItem.MyListItem[1000]; } } } MyListItem.sln - UserControl.csは省略します。 ここで質問なんですが、 Form1.csで、 private void TestMethod() { MyList1.Items[i].ImageURL = "http://画像URL"; } のようにしてMyList内のMyListItemのオブジェクト配列のなかで、 Count==iのものを探し、それのImageURLの値を変更することは可能でしょうか? 可能でしたら、その方法またはコードを教えていただけないでしょうか? 検索しても見つからなかったので質問しました。 回答よろしくお願いします。 あ、ちなみにVisual Studio 2010です。

2.4GHzと5GHzの交互の点滅
このQ&Aのポイント
  • 昨日、急にインターネットに(Wi-Fi)繋がらなくなりましたが、ルーターを再接続したところ繋がりました。しかし、ルーターの2.4GHzと5GHzのランプが交互に点滅しています。このままで問題ないのでしょうか?
  • フレッツ光とプロバイダーに問題はないと確認しましたが、ルーターのランプが点滅しています。この状態でインターネットに接続しても問題はありませんか?
  • ルーターの2.4GHzと5GHzのランプが交互に点滅していますが、このままで問題はありませんか?フレッツ光とプロバイダーには問題はないようです。
回答を見る

専門家に質問してみよう