拖入表格 [英] Dragged into a form

查看:106
本文介绍了拖入表格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

将自定义控件拖到窗体中,我想给自定义控件的属性加载多个值,我该怎么办?在该属性将触发什么之前或之后,将其拖到自定义控件中的窗体中?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆