拖入表格 [英] Dragged into a form
问题描述
将自定义控件拖到窗体中,我想给自定义控件的属性加载多个值,我该怎么办?在该属性将触发什么之前或之后,将其拖到自定义控件中的窗体中?
Dragged a custom control into a form , I want to give a property of the custom control load multiple values, how can I do?Dragged into a form in a custom control before or after what the property would trigger?
像这样的代码:
公共部分类MyControl:System.Windows.Forms.TextBox
{
公共MyControl()
{
InitializeComponent();
}
public partial class MyControl : System.Windows.Forms.TextBox
{
public MyControl()
{
InitializeComponent();
}
私有ShowFields _showFields = new ShowFields();
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Editor(typeof(ShowField_CollectionEditor),typeof(System.Drawing.Design.UITypeEditor))]
public ShowFields ShowFields
{
get
{
//当我第一次将此自定义控件拖动到窗体中时,我想像这样添加两个ShowField.
// //如果(_showFields == null)
//{
//_showFields = new ShowFields();
//_showFields.AddRange(new ShowField [] {new ShowField("OurCode","Code"),new ShowField("OurName","Name")});
//}
return _showFields;
}
}
}
private ShowFields _showFields = new ShowFields();
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ShowFields ShowFields
{
get
{
//I want to add two ShowField like this, when this custom control is dragged into a Form in the first time.
//But always add the two ShowField ,when the form is opened.//if (_showFields == null)
//{
// _showFields = new ShowFields();
// _showFields.AddRange(new ShowField[] { new ShowField("OurCode", "Code"), new ShowField("OurName", "Name") });
//}
return _showFields;
}
}
}
公共类ShowField
{
私有字符串_colName;
public class ShowField
{
private string _colName;
[Category("ShowItem")]
[DefaultValue(typeof(string),")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
公共字符串ColName
{
得到{return _colName; }
设置
{
_colName =值;
}
}
[Category("ShowItem")]
[DefaultValue(typeof(string), "")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string ColName
{
get { return _colName; }
set
{
_colName = value;
}
}
私有字符串_showName;
[Category("ShowItem")]
[DefaultValue(typeof(string),")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
公共字符串ShowName
{
get {return _showName; }
set {_showName = value; }
}
private string _showName;
[Category("ShowItem")]
[DefaultValue(typeof(string), "")]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public string ShowName
{
get { return _showName; }
set { _showName = value; }
}
公共ShowField(字符串colName,字符串showName)
{
_colName = colName;
_showName = showName;
}
public ShowField(string colName, string showName)
{
_colName = colName;
_showName = showName;
}
公共ShowField()
{
}
public ShowField()
{
}
}
公共类ShowFields:System.Collections.CollectionBase
{
公共ShowFields()
{
public class ShowFields : System.Collections.CollectionBase
{
public ShowFields()
{
}
公共ShowField Add(ShowField si)
{
this.InnerList.Add(si);
返回si;
}
public ShowField Add(ShowField si)
{
this.InnerList.Add(si);
return si;
}
public void Remove(ShowField si)
{
this.InnerList.Remove(si);
}
public void Remove(ShowField si)
{
this.InnerList.Remove(si);
}
公共布尔包含(ShowField si)
{
返回this.InnerList.Contains(si);
}
public bool Contains(ShowField si)
{
return this.InnerList.Contains(si);
}
公共ShowField this [int i]
{
get {return(ShowField)this.InnerList [i]; }
设置
{
this.InnerList [i] =值;
}
}
public ShowField this[int i]
{
get { return (ShowField)this.InnerList[i]; }
set
{
this.InnerList[i] = value;
}
}
public void AddRange(ShowField [] si)
{
this.InnerList.AddRange(si);
}
public void AddRange(ShowField[] si)
{
this.InnerList.AddRange(si);
}
公共ShowField [] GetValues()
{
ShowField [] si = new ShowField [this.InnerList.Count];
this.InnerList.CopyTo(0,si,0,this.InnerList .Count);
返回si;
}
}
public ShowField[] GetValues()
{
ShowField[] si = new ShowField[this.InnerList.Count];
this.InnerList.CopyTo(0, si, 0, this.InnerList.Count);
return si;
}
}
公共类ShowField_CollectionEditor:System.ComponentModel.Design.CollectionEditor
{
私有Type []类型;
public class ShowField_CollectionEditor : System.ComponentModel.Design.CollectionEditor
{
private Type[] types;
公共ShowField_CollectionEditor(类型类型)
:基本(类型)
{
types = new Type [] {typeof(ShowField)};
public ShowField_CollectionEditor(Type type)
: base(type)
{
types = new Type[] { typeof(ShowField) };
}
受保护的重写Type [] CreateNewItemTypes()
{
返回类型;
}
}
protected override Type[] CreateNewItemTypes()
{
return types;
}
}
推荐答案
当您说我想给自定义控件的一个属性加载多个值"时,您是什么意思?
What do you mean when you say "I want to give a property of the custom control load multiple values" ?
您是说要设置自定义控件的属性吗?
Are you saying you want to set a property of the custom control?
请提供更多详细信息,包括代码示例,以向我们展示自定义控件的功能.
Please provide more details, including code sample to show us what the custom control does.
这篇关于拖入表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!