0
ユーザーコントロールに関するヘルプが必要です。 私はカスタムコントロールデザイナーを持つユーザーコントロールを持っています:C#カスタムControlDesignerを使用したユーザーコントロール各コピー
デザイナーでは、ユーザーコントロールで特定のプロパティを変更した場合、私はSelectionRulesを変更します。 このユーザーコントロールを複数コピーしてプロパティを変更すると、デザイナーはすべてのコピーのSelectionRulesを変更します。
コピーごとにこれを設定するにはどうすればよいですか?ここで
コードです:
[Designer(typeof(BorderedTextBox_Designer))]
public partial class BorderedTextBox : UserControl
{
[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)]
[Description("Controls whether the text of the edit control can span more than one line.")]
[Category("Behavior")]
[DefaultValue(false)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public bool Multiline
{
set
{
//Set to TRUE:
if (value)
{
BorderedTextBox_Designer.SelectionRule = BorderedTextBox_Designer.SelectionRulesEnum.All;
}
//Set to FALSE:
else
{
BorderedTextBox_Designer.SelectionRule = BorderedTextBox_Designer.SelectionRulesEnum.RightLeft;
}
}
}
}
internal class BorderedTextBox_Designer : ControlDesigner
{
internal static SelectionRulesEnum SelectionRule;
public override SelectionRules SelectionRules
{
get
{
switch (SelectionRule)
{
case SelectionRulesEnum.All:
return SelectionRules.Visible | SelectionRules.Moveable | SelectionRules.AllSizeable;
case SelectionRulesEnum.UpDown:
return SelectionRules.Visible | SelectionRules.Moveable | SelectionRules.TopSizeable | SelectionRules.BottomSizeable;
case SelectionRulesEnum.RightLeft:
return SelectionRules.Visible | SelectionRules.Moveable | SelectionRules.LeftSizeable | SelectionRules.RightSizeable;
case SelectionRulesEnum.None:
return SelectionRules.Visible | SelectionRules.Moveable;
default:
return SelectionRules.Visible | SelectionRules.Moveable;
}
}
}
internal enum SelectionRulesEnum
{
All,
UpDown,
RightLeft,
None
}
}
あなたはむしろhttps://msdn.microsoft.com/en-us/library([MSDN]参照(イベントを使用して、静的メンバを経由して、デザイナーのプロパティを設定するべきではありません/ms973820.aspx))、イベントでは、プロパティが変更されたコントロールのインスタンスを取得し、そこでデザイナのプロパティを調整できます。 – Sinatr
ありがとうございます!これは助けになった! 答えとして投稿してください。解決策としてマークすることができます。 –
私は良い答え(コメントとしてのヒント)を投稿することはできません。しかし、[あなたは](http://stackoverflow.com/help/self-answer)。 – Sinatr