コントロールをデザイン モードで Web フォームに配置した場合にのみ発生する「コントロールのレンダリング エラー」エラーが発生します。ページを実行すると、コントロールは正しく表示されます。
上記のステートメントは重要ではありません。返されたツールバー オブジェクトが null であるため、このエラーが発生します。
デバッグ後、問題は CeateChildControls() から呼び出される関数にあります。
public static ToolBars LoadToolbarsFromConfigFile()
{
ToolBars toolbars;
Assembly executingAssembly = Assembly.GetExecutingAssembly();
string resource = "Editor.ConfigFiles.ToolBars.xml";
using (Stream stream = executingAssembly.GetManifestResourceStream(resource))
{
XmlSerializer serializer = new XmlSerializer(typeof(ToolBars));
toolbars = (serializer.Deserialize(stream)) as ToolBars;
}
return toolbars;
}
ツールバーは null を返します! (デザイン モード)
しかし、ページを実行すると、ツールバーは適切なデータを返します。
私のコードについてさらに情報が必要な場合は、お問い合わせください。
アップデート:
アセンブリで何かする必要があります。指定したファイルの代わりにファイル ストリームを使用すると、機能します。
別の更新:
コードを少し変更し、テスト目的で「データセット」を追加しました。
using (DataSet ds = new DataSet())
{
ds.ReadXml(typeof(TheEditor).Assembly.GetManifestResourceStream("Editor.ConfigFiles.ToolBars.xml"));
//show message box to see if it works
System.Windows.Forms.MessageBox.Show(ds.Tables.Count.ToString());
}
私が気付いたもう1つのことは、コントロールを新しいWebサイトプロジェクトに追加すると上記のすべてが発生しますが、コントロールのプロジェクトのデバッグプロパティを外部プログラムを開始するように設定すると(私はビジュアルスタジオを開始します)、そこに新しいプロジェクトを作成して追加しますすべてが機能するように制御します。