1

UserControls の 1 つでデータを表示する (編集しない) ことを目的とした多数のテキスト ボックスを無効にしようとしています。ただし、何らかの理由で textBoxes を適切に無効にすることができません。

"ApplyAuthorization on readWriteAuthorization" を true に設定し、textBoxes は正しいプロパティにデータバインドされています。

CanWritePropertyまた、オブジェクトの に次の行を追加しました。

if (propertyName == OpeningDateProperty.Name) return false;
if (propertyName == ChangeDateProperty.Name) return false;
if (propertyName == CloseDateProperty.Name) return false;
return base.CanWriteProperty(propertyName);

ここで何が間違っているのかわかりません。私は最近、他の UserControls にほとんど同じことを問題なく実装しました...

C# .NET (Visual Studio 2008) で Windows フォームを使用しています。

編集:コード スニペットとプロパティは、顧客オブジェクトから取得されます。日付は、顧客アカウントの開設、最終変更、および閉鎖を表します。それらはまったく編集されることは想定されておらず、実際、古いソリューションでは textLabels で表されますが、テキスト ボックスを使用して、プロパティの CanWriteProperty を false にしたいと考えています。

情報が不足しているかもしれないことは承知していますが、このプロセスで忘れていた可能性があるものを探しています。

編集:私たちはCSLAも使用していますが、これは私たちがこのようにしたい理由と関係があると思います(私はこの全体が初めてです)。

編集(解決策):以下の私の回答でわかるように、問題は、私がCurrentItemChangedすべきようにイベントを設定していなかったことです。

4

4 に答える 4

14

それらを読み取り専用にしようとしている場合は、.ReadOnly プロパティを true に設定してください。

または、これらのテキストボックスを編集に使用したことがない場合は、代わりにラベルを使用してください。

編集: ああ、これは純粋なWindowsフォームの質問というよりも、CSLAフレームワークの質問のようです。この質問の前に CSLA について聞いたことさえありませんでしたが、面白そうです。

于 2009-02-18T16:40:34.347 に答える
3

コントロールのプロパティにデータバインドしている場合は、テキスト ボックスの "ReadOnly" プロパティをビジネス オブジェクトの "CanWrite" プロパティにバインドするだけです。

于 2009-02-18T17:01:46.010 に答える
1

ReadOnly プロパティのことだと思います

于 2009-02-18T16:45:10.293 に答える