一般显示 Property Editor 有2中方法:
1.通过 IWindowsFormsEditorService.ShowDialog( Form dialog),以弹出窗体的形式显示出来
2.通过IWindowsFormsEditorService.DropDownControl( Control control);以下拉列表的形式显示出来
自定义 Property Editor 是非常简单的,就是 新建一个Form 或 继承一个UserControl,但更重要的问题是
控件的属性与Property Editor 的交互问题,即:我怎么把 属性 以 自定义的Property Editor 这样的形式表现出来,还有怎么把 在 Property Editor 上的修改交互给属性呢
穿插一句:
有时候,定义的属性的类型并不是vs的基本类型,而是以Class或别的形式出现,如
1
public
Size _Size
2![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3![](/Images/OutliningIndicators/InBlock.gif)
4![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{
5
return size;
6
}
7![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{
8
9
size = value;
10
}
11
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
7
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
11
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
这时,和这样的一个属性交互,就会涉及到 类型转换( TypeConverter)了
那么,今天就来和大家一起试图解决以上2问题:属性与Property Editor 的交互, TypeConverter
最终效果图:
以窗体的形式显示
(图A)
![](https://i-blog.csdnimg.cn/blog_migrate/fed327af9f3845f689592a1d68b4099a.jpeg)
以下拉的形式出现:(图B)
![](https://i-blog.csdnimg.cn/blog_migrate/006e24229bcfced293870f6913b26fa0.jpeg)
1
internal
class
ItemEditor : UITypeEditor
2![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3![](/Images/OutliningIndicators/InBlock.gif)
4![](/Images/OutliningIndicators/ContractedSubBlock.gif)
Methods
..#region Methods
..
5![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
6
/// 初始化 <see cref="ButtonsEditor"/> 的实例
7
/// </summary>
8![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
public ItemEditor()
{ }
9![](/Images/OutliningIndicators/InBlock.gif)
10![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
11
/// 获取由 <see cref="EditValue"/> 方法使用的编辑器样式
12
/// </summary>
13
/// <param name="context">可用于获取附加上下文信息的 <see cref="ITypeDescriptorContext"/>。</param>
14
/// <returns><see cref="UITypeEditorEditStyle"/> 值,指示 <see cref="EditValue"/> 使用的编辑器的样式。如果 <see cref="UITypeEditor"/> 不支持该方法,则 GetEditStyle 将返回 <see cref="UITypeEditorEditStyle.None"/></returns>
15
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
16
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
17![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
18
return UITypeEditorEditStyle.Modal;
19
}
20![](/Images/OutliningIndicators/InBlock.gif)
21![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
22
/// 使用由 <see cref="GetEditStyle"/> 指示的编辑器样式编辑指定对象的值。
23
/// </summary>
24
/// <param name="context">可用于获取附加上下文信息的 <see cref="ITypeDescriptorContext"/>。 </param>
25
/// <param name="provider"><see cref="IServiceProvider"/>,此编辑器可用其来获取服务。</param>
26
/// <param name="value">要编辑的对象。</param>
27
/// <returns>新的对象值。</returns>
28
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
29
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
30![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
31
32
33
IWindowsFormsEditorService service1 = (IWindowsFormsEditorService) provider.GetService(typeof(IWindowsFormsEditorService));
34
if (service1 == null)
35![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
36
return value;
37
}
38
ListItemCollection LI=null;
39![](/Images/OutliningIndicators/InBlock.gif)
40
41
if (context.Instance is ListBox)
42![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
43
44
LI = ((ListBox)context.Instance).ListItemCollection;
45
}
46
else if (context.Instance is object[])
47![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
48
49
object[] objArray1 = (object[])context.Instance;
50
if (objArray1[0] is ListItemCollection)
51![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
52
LI = (ListItemCollection)objArray1[0];
53
}
54
}
55
56![](/Images/OutliningIndicators/InBlock.gif)
57![](/Images/OutliningIndicators/InBlock.gif)
58
ListItemCollection templistItems = new ListItemCollection();
59
if (LI != null)
60![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
61
IEnumerator myEnumerator = LI.GetEnumerator();
62![](/Images/OutliningIndicators/InBlock.gif)
63
while ((myEnumerator.MoveNext()) && (myEnumerator.Current != null))
64![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
65
templistItems.Add((ListItem)myEnumerator.Current);
66
}
67
}
68![](/Images/OutliningIndicators/InBlock.gif)
69
ItemEditorForm bef = new ItemEditorForm(templistItems);
70
if (service1.ShowDialog(bef) == DialogResult.OK)
71![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
72
value = templistItems;
73
}
74
else
75![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
76
77
if (templistItems == null || templistItems.Count <= 0)
78
value = null;
79
else
80
value = LI;
81![](/Images/OutliningIndicators/InBlock.gif)
82
}
83
return value;
84
85
}
86
#endregion
87![](/Images/OutliningIndicators/InBlock.gif)
88
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/dot.gif)
![](https://www.cnblogs.com/Images/dot.gif)
5
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
8
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/InBlock.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
83
![](/Images/OutliningIndicators/InBlock.gif)
84
![](/Images/OutliningIndicators/InBlock.gif)
85
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
86
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
87
![](/Images/OutliningIndicators/InBlock.gif)
88
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
1
class
DropDownEditor : UITypeEditor
2![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
4![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
5
if (context != null && context.Instance != null)
6![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
7
return UITypeEditorEditStyle.DropDown;
8
}
9![](/Images/OutliningIndicators/InBlock.gif)
10
return base.GetEditStyle(context);
11
}
12![](/Images/OutliningIndicators/InBlock.gif)
13
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
14![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
15
IWindowsFormsEditorService editorService = null;
16![](/Images/OutliningIndicators/InBlock.gif)
17
if (context != null && context.Instance != null && provider != null)
18![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
19![](/Images/OutliningIndicators/InBlock.gif)
20
editorService = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
21
Size tempSize = null;
22
if (context.Instance is ListBox)
23
tempSize = ((ListBox)context.Instance)._Size;
24
ItemEditorControl editorControl = new ItemEditorControl(tempSize);
25![](/Images/OutliningIndicators/InBlock.gif)
26
editorService.DropDownControl(editorControl);
27
value = tempSize;
28
return value;
29![](/Images/OutliningIndicators/InBlock.gif)
30
}
31
else
32![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
33
return null;
34
}
35![](/Images/OutliningIndicators/InBlock.gif)
36
}
37![](/Images/OutliningIndicators/InBlock.gif)
38
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
自定义一个UserControl,作为下拉列表出现
(图C) ItemEditorControl.cs
![](https://i-blog.csdnimg.cn/blog_migrate/16337fdf4c54f0ad733134963eb0b0f7.jpeg)
1
public
partial
class
ItemEditorControl : UserControl
2![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3![](/Images/OutliningIndicators/InBlock.gif)
4
private Size size;
5![](/Images/OutliningIndicators/InBlock.gif)
6![](/Images/OutliningIndicators/InBlock.gif)
7![](/Images/OutliningIndicators/InBlock.gif)
8![](/Images/OutliningIndicators/ContractedSubBlock.gif)
属性#region 属性
9
public Size _Size
10![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
11![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
get
{
12![](/Images/OutliningIndicators/InBlock.gif)
13
if (size != null)
14
return size;
15
return new Size(); ;
16
}
17![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
set
{
18![](/Images/OutliningIndicators/InBlock.gif)
19
size = value;
20
21
}
22
}
23
#endregion
24![](/Images/OutliningIndicators/InBlock.gif)
25
26![](/Images/OutliningIndicators/InBlock.gif)
27
public ItemEditorControl(Size _size)
28![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
29
this.size = _size;
30
InitializeComponent();
31
}
32![](/Images/OutliningIndicators/InBlock.gif)
33![](/Images/OutliningIndicators/InBlock.gif)
34
public ItemEditorControl()
35![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
36
InitializeComponent();
37
}
38![](/Images/OutliningIndicators/InBlock.gif)
39
private void ItemEditorControl_Load(object sender, EventArgs e)
40![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
41
if (size != null)
42![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
43
this.txtText.Text = size.Width.ToString();
44
this.txtValue.Text = size.Height.ToString();
45
}
46
}
47![](/Images/OutliningIndicators/InBlock.gif)
48![](/Images/OutliningIndicators/InBlock.gif)
49![](/Images/OutliningIndicators/InBlock.gif)
50
private void ItemEditorControl_Leave(object sender, EventArgs e)
51![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
52
if (!String.IsNullOrEmpty(this.txtText.Text) && !String.IsNullOrEmpty(this.txtValue.Text))
53![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
54
55
if (size != null)
56![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
57
size.Width = Convert.ToInt16(this.txtText.Text);
58
size.Height = Convert.ToInt16(this.txtValue.Text);
59
}
60
else
61
size = new Size(Convert.ToInt16(txtText.Text), Convert.ToInt16(txtValue.Text));
62
}
63
}
64
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
11
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
63
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
64
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
定义一个窗体(即图A)
1
public
partial
class
ItemEditorForm :Form
2![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
3
private ListItemCollection listItems;
4
private string temp="";
5
public ItemEditorForm(ListItemCollection _listItem)
6![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
7
this.listItems = _listItem;
8
9
InitializeComponent();
10
}
11![](/Images/OutliningIndicators/InBlock.gif)
12
private void OK_Click(object sender, EventArgs e)
13![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
14
15
if (listItems != null)
16
listItems.Clear();
17
string delimStr = ",";
18
char [] delimiter = delimStr.ToCharArray();
19
string [] split = null;
20
string b = this.textBox1.Text;
21![](/Images/OutliningIndicators/InBlock.gif)
22
split = b.Split(delimiter);
23
if (split.Length > 0)
24![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
25
for (int i = 0; i < split.Length; )
26![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
27
ListItem listItem = new ListItem(split[i], split[i + 1]);
28![](/Images/OutliningIndicators/InBlock.gif)
29
listItems.Add(listItem);
30
i += 2;
31
}
32
}
33
else
34![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
35
listItems = null;
36
}
37![](/Images/OutliningIndicators/InBlock.gif)
38
DialogResult = DialogResult.OK;
39
Close();
40
}
41![](/Images/OutliningIndicators/InBlock.gif)
42
private void ItemEditorForm_FormClosing(object sender, FormClosingEventArgs e)
43![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
44
45
}
46![](/Images/OutliningIndicators/InBlock.gif)
47
private void ItemEditorForm_Load(object sender, EventArgs e)
48![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
49
50![](/Images/OutliningIndicators/InBlock.gif)
51
if (listItems!=null && listItems.Count>0)
52![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
53
foreach (ListItem listItem in listItems)
54
temp += listItem.Text + "," + listItem.Value + ",";
55
this.textBox1.Text = temp.Substring(0, temp.Length - 1);
56
}
57
}
58
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
37
![](/Images/OutliningIndicators/InBlock.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](https://www.cnblogs.com/Images/dot.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
57
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
58
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
下载源代码