冒着被嘲笑的风险并因违反一些设计规则而飙升,我有以下问题。
我们创建了一些Usercontrols,我们使用Properties公开了这些用户控件的控件。然后,我们在设计器中更改这些问题以进一步调整用户控件(针对特定表单),如果我们保存任何内容都不是由设计者编写的,并且确实没有保存更改。
当我们将更改硬编码到设计器文件中时,更改会被保存,如果我们通过设计器手动更改属性并保存以前的所有更改,则会重新进行更改。
我们是否违反了某些模式/设计规则?这是一个错误,有更好的方法吗?
问候,
F.B。十凯特
答案 0 :(得分:3)
显然可以使用几个属性执行此操作,在您添加DesignerSerializationVisibilityAttribute:http://msdn.microsoft.com/en-us/library/system.componentmodel.designerserializationvisibilityattribute.aspx的Control属性中,您将其设置为内容:http://msdn.microsoft.com/en-us/library/system.componentmodel.designerserializationvisibility.aspx
我同意Rob的观点,虽然拥有一个代表这个属性的属性是一个更好的做法,但这是怎么回答我的问题,我到底该怎么做:)
答案 1 :(得分:2)
如果您在父用户控件上创建了一个属性,然后只是委托给子用户控件的属性,那么您应该看到设计师能够赶上你。
public class CustomerEditor
{
public DateTime? Birthday
{
get
{
return birthdayPicker.Date;
这有额外的好处,你可以(稍微)保护你的客户端代码(设计器生成的东西)免受父用户控件的特定实现细节的影响。例如,如果您将某个父usercontrol的子控件从datepicker更改为文本框,则只需更改已添加到父usercontrol的属性,您就不必更新10-20使用此用户控件的表单。
public class CustomerEditor
{
public DateTime? Birthday
{
get
{
//probably tryparse but you get the idea
return DateTime.Parse(birthdayPickerTextBox.Text);