.Net UserControl の設計上の問題
-
08-06-2019 - |
質問
を持つ UserControl を作成しました。 ListView
初期化。ListView はプロパティを通じてパブリックにアクセスできます。UserControl をフォームに配置してデザインしようとすると、 ListView
不動産であっても、 ListView
再度コンパイルしてデフォルトの状態に戻るまで、そのままになります。
デザインの変更を適用するにはどうすればよいですか? ListView
?
解決
次のように、ListView プロパティを DesignerSerializationVisibility 属性で修飾する必要があります。
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ListView MyListView { get { return this.listView1; } }
これにより、デザイナーのコード ジェネレーターにコードを出力するように指示されます。
他のヒント
フレドリック 基本的に、デザイナーがプロパティをページに永続化して、実行時にインスタンス化できるようにする必要がある場合は、これは正しいです。これを行う方法は 1 つだけあり、その値を ASPX ページに書き込み、ランタイムによって取得されることです。
それ以外の場合、コントロールは毎回単純にデフォルトの状態に戻ります。
ASP.NET では、ページ (およびそのコンテンツ) とコードは完全に分離されており、実行時に接続されるということを常に念頭に置いてください。これは、WinForms アプリ (フォームがオブジェクトのインスタンスである場合) のように、優れた分離コード デザイナー サポートが得られないことを意味します。
はっきり言っておきますが、あなたはこのようなことをしたことがありますよね?
public ListView MyListView { get { return this.listView1; } }
それでは、(設計時に) UserControl の MyListView プロパティにアクセスしているのでしょうか?
適切なデザイン時のサポートが必要な場合は、ListView 自体 (元の UserControl に戻す) の "Modifier" プロパティを Public に変更する方が良いと思います。 そうすることで、UserControl のインスタンスで ListView を直接変更できるようになります。とにかくそうすることで成功しました。