web-dev-qa-db-ja.com

保護レベルが原因でコントロールにアクセスできないのはなぜですか?

Program.csからコントロールのテキストプロパティにアクセスしようとしていますが、保護されたレベルのためにアクセスできないと表示されます。どうすればこれを修正できますか?

16
user164203

これはコントロールのデフォルトのプロパティであり、指定されたコントロールを含むフォームのデザインビューに移動し、コントロールのモディファイアプロパティをパブリックまたは内部に変更することで解決できます。それはやるべきだ! :)

28
jay_t55

制御保護レベルが解決されました

IDでデザイナファイル検索コントロールに移動します。例:txtModelの変更protected修飾子からpublic修飾子

5
Asad

背後にある概念は保護レベルです。オブジェクト指向パラダイムで学習したように、クラスメンバーの変数をプライベートに保ち、プロパティから設定または取得します。そのため、これは適切なアプローチではありません。

1
Asad

x:FieldModifier="public"を使用します。例:.

<TextBlock x:FieldModifier="public" x:Name="AccessibleTextBlock" />

ここで説明されているように: XAML名前付きフィールドの可視性の変更

私の場合、UserControlを別のDLLに配置します。 WPFの規則では、すべての名前付きフィールドをデフォルトでinternalとして設定します。 x:FieldModifier="public"を使用すると、問題が解決しました。

0
Michael G