カスタムコントロールの既定のプロパティを設定する方法、つまりデザイナで最初にフォームにドラッグするときの方法は?C#WinFormsカスタムコントロールの既定のプロパティ
ここやGoogleで回答が見つからない。私が得るのは、値を制約する方法だけです。
幅を使用&高さの例として、コンストラクタで高さを設定すると、デザイナが開かれるたびにコントロールに適用されます。ユーザーがプロパティを変更した後で再び適用されないデフォルトに設定するにはどうすればよいですか?
カスタムコントロールの既定のプロパティを設定する方法、つまりデザイナで最初にフォームにドラッグするときの方法は?C#WinFormsカスタムコントロールの既定のプロパティ
ここやGoogleで回答が見つからない。私が得るのは、値を制約する方法だけです。
幅を使用&高さの例として、コンストラクタで高さを設定すると、デザイナが開かれるたびにコントロールに適用されます。ユーザーがプロパティを変更した後で再び適用されないデフォルトに設定するにはどうすればよいですか?
コンストラクタで、キャンバスにドラッグしたときに表示するプロパティの値を設定します。 または、それらが基本コントロールの組み込みのプロパティである場合、それらをデザイナコードクラスに設定します。
コンストラクタでプロパティを設定すると、デザイナが開かれるたびにそのプロパティが適用され、効果的に設定することはできません。 –
以下では、フォームを表示するときに値を追加することができます。その後、フォームを設定することができます。
private int widthLength = 5;
public int Width {
get { return widthLength ; }
set { widthLength = value;
}
これを使用すると、コントロールがDesignerでフォームにドラッグされたときに、デフォルトのプロパティが適用されません。また、継承されたメンバを隠すことを警告するコンパイラもあります。警告によって指示されたとおりに「新規」を追加しても動作は変更されません。 –
私が上書きできないプロパティの場合、new
演算子を使用しています。たとえば、ListView
コントロールのMultiSelect
プロパティです。私はMultiSelect
をデフォルトのfalse
にしたいと思っていますが、私はまだそれを変更したいと思っています。
その私はコンストラクタでfalse
に設定、またはInitializeComponent
で、(私は思う)問題は、デフォルト値がまだtrue
であるということですので、私はデザイナーでtrue
に値を設定した場合、デザイナー通知した場合true
がデフォルトであるため、既にデフォルトであると思うものに明示的に設定するのではなく、プロパティを設定するだけではありません。しかし、その値はコンストラクタに設定されているので、代わりにfalse
になります。これは、コントロールがまだfalse
いうよりtrue
、および財産へのデフォルトはまだ上で切り替えることができる機能MultiSelect
性質を持つことができます
/// <summary>Custom ListView.</summary>
public sealed partial class DetailsListView : ListView
{
...
[DefaultValue(false)]
public new bool MultiSelect {
get { return base.MultiSelect; }
set { base.MultiSelect = value; }
}
:
は、私は、次のコードを使用し、この問題を回避するために、新しいコントロール。EDIT:抽象的なフォームを使用する際に問題が発生しました。私は抽象フォームクラスを使用しています。具体的な実装では、デザイナを使用する必要があるときに切り替えます。私は、私が継承していたクラスを切り替えると、カスタムコントロールのプロパティが古いデフォルトにリセットされることがわかりました。私はカスタムコントロールのコンストラクタでプロパティをデフォルトに設定してこの動作を修正したようです。
これをベースクラスプロパティに適用する方法の例を教えてください。 –
謝罪 - それは '[DefaultValue(someValue)]'です。ここにMSDNへのリンクがあります。http://msdn.microsoft.com/en-us/library/system.componentmodel.defaultvalueattribute%28v=vs.90%29.aspx – Bridge
私はDefaultValue属性はあなたのものだと思います必要。 Visual Studio IDEは、属性に指定されている既定値をDesignerファイルに配置します。ユーザーがデフォルト値を他の値に変更すると、Visual Studio IDEはDesignerファイルを新しい値で更新します。これにより、既定値が既に上書きされているため、コントロールが再度開くときに前の値を再ロードすることができなくなります。 – jags