- - PR -
デザイン画面でデザインできなくなる
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-06-25 01:04
いつも、拝見させていただき、勉強させていただきます。
VB.NET(Visual Studio .NET 2003)でWindowsアプリケーションを作成しております。 レイアウトを統一したくて、Mainというフォームを作成し、そのフォームを継承しております。 Mainフォームにはフォームを切り替えるためのコードを記入しております。 ところが、突然、継承先のフォーム(Mainフォームでないフォーム)すべてがデザイナで表示しようとすると、 「ドキュメントを読み込み中にエラーが発生しました。このエラーを修正してから、再度ドキュメントを読み込んでください。エラーメッセージは以下のとおりです。インデックスおよび長さの文字列内の場所を参照しなければなりません。パラメータ名:length」 となって、開くことができません。 継承元のMainフォームは表示ができます。 とくにlengthをつかった箇所をみつけることができず、新しいプロジェクトを作成し、同じMainというフォームを作成して継承先フォームを無理やりそのプロジェクトに追加してみると、開くことができたのですが、何度か修正をするとまた開くことができませんでした。 すみませんが、どなたか、原因がわかる方いらっしゃらないでしょうか。 | ||||||||||||
|
投稿日時: 2005-06-26 18:22
提示していただいた情報だけで原因がわかる人は居なさそうですね。
問題が再現する最小限のコードを提示していただければ検証できますよ。 _________________ たつごろー codeseek こみゅぷらす | ||||||||||||
|
投稿日時: 2005-06-26 19:34
継承したフォーム、がミソでしょう。確か、Formから直に継承されたフォームでないとデザインできないはず・・・というスレッドがあったはず。
| ||||||||||||
|
投稿日時: 2005-06-27 09:56
「こともある」が正解だと思います。 ビルドエラーが 1 度起きると、リソースが剥がされたりして表示されなくなりますね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2005-06-27 10:18
ご回答ありがとうございます。また、返答がおそくなってしまい申し訳ありません。
説明不足で、申し訳ありません。 画面の構成としては、以下になってます。 継承フォームB(継承元 Main) 継承フォームC(継承元 Main) 継承フォームD(継承元 Main) それそれ、左側がメニュー部分になっており、他フォームへ遷移するできるボタンが3つがあります。 そしてそのメニュー部分をMainで作っています。 Main内にはそれぞれのボタンに Dim frmA As New AFORM Dim frmCurr As Form frmCurr = appContext.MainForm If form.Name <> frmCurr.Name Then form.Show() appContext.MainForm = form frmCurr.Close() End If と記述しております。 実行すると問題がなく動くのですが、デザイン画面を修正しようとすると 継承フォームの修正ができません。
別プロジェクトを作成し、それぞれのフォームをつくり直したあと、デザイナで画面が表示されていたのに、1度ビルドエラーを起こしたら表示されなくなりました。 いろいろありがとうございます。まだ、デザインを変更していかなくてはならないので、継承を使わない方法をとってみようと思います。 本当に。、勉強になりました。ありがとうございます。 [ メッセージ編集済み 編集者: こまりもの 編集日時 2005-06-27 10:22 ] | ||||||||||||
|
投稿日時: 2005-06-27 12:47
コンパイルが通っていれば表示できそうな気がしますが。
じゃんぬねっとさんが仰っておられるようにリソースファイル関連の問題もあります。 コンパイルが成功した後、一度プロジェクトを閉じて開きなおしてもだめですか? あと、デザイナで表示するためには、 引数なしのコンストラクタが必要とか、条件もありますが その場合エラーメッセージが違いますしね。 | ||||||||||||
|
投稿日時: 2005-06-27 12:51
すでにクローズ気味ですが・・・
私も今のプロジェクトで同じ現象が起きたことがあります。 みなさんおっしゃるとおり、継承フォームの場合、親フォームがビルドされていなかったり、 ビルドエラーを起こしたりすると、デザイナが表示されなくなります。 経験上、ビルドエラーを解消してリビルドするだけで、大概は表示できるようになります。 それでもダメな場合は、デザイナが表示されないフォームをプロジェクトから一度削除し、 もう一度追加してあげると直ります。 継承フォームは何かと便利なので、面倒でも私はこんな感じでやり過ごしています。 | ||||||||||||
|
投稿日時: 2005-06-27 12:56
提示していただいたコードでは再現テストができません。 不具合がでる最低限のコードにできないですか? というか、もう終わりですかね。 継承を使わないことで対応できるならそのほうがよいと思います。 _________________ たつごろー codeseek こみゅぷらす |