1、先画出用于下拉编辑器UI的用户控件

代码:
2、再编写属性值编辑器类
3、再添加一个属性,并用EditorAttribute 指定相应的编辑器类
The end.

代码:
1
using System;
2
using System.Collections.Generic;
3
using System.ComponentModel;
4
using System.Drawing;
5
using System.Data;
6
using System.Text;
7
using System.Windows.Forms;
8
9
namespace CustomControlSample
10
{
11
[DesignTimeVisible(false)] //不显示在ToolBox中
12
public partial class UcSimpleCustomTypeDropDownEditor : UserControl
13
{
14
private SimpleCustomType _oldSCT;
15
private SimpleCustomType _newSCT;
16
private bool canceling = false; // 按Esc 键,关闭下拉菜单,不更新值。
17
18
public SimpleCustomType SCT
19
{
20
get { return _newSCT; }
21
}
22
23
public UcSimpleCustomTypeDropDownEditor(SimpleCustomType sct)
24
{
25
_oldSCT = sct;
26
_newSCT = sct;
27
InitializeComponent();
28
}
29
30
private void UcSimpleCustomTypeDropDownEditor_Load(object sender, EventArgs e)
31
{
32
this.textBox1.Text = _oldSCT.Min.ToString();
33
this.textBox2.Text = _oldSCT.Max.ToString();
34
}
35
36
private void textBox1_Validating(object sender, CancelEventArgs e)
37
{
38
try
39
{
40
int.Parse(textBox1.Text);
41
}
42
catch (FormatException)
43
{
44
e.Cancel = true;
45
MessageBox.Show("无效的值。", "验证错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
46
}
47
}
48
49
private void textBox2_Validating(object sender, CancelEventArgs e)
50
{
51
try
52
{
53
int.Parse(textBox2.Text);
54
}
55
catch (FormatException)
56
{
57
e.Cancel = true;
58
MessageBox.Show("无效的值。", "验证错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
59
}
60
}
61
62
protected override bool ProcessDialogKey(Keys keyData)
63
{
64
if (keyData == Keys.Escape)
65
{
66
canceling = true;
67
}
68
return base.ProcessDialogKey(keyData);
69
}
70
71
private void UcSimpleCustomTypeDropDownEditor_Leave(object sender, EventArgs e)
72
{
73
if (!canceling)
74
{
75
SCT.Min = int.Parse(this.textBox1.Text);
76
SCT.Max = int.Parse(this.textBox2.Text);
77
}
78
}
79
}
80
}
81

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

2、再编写属性值编辑器类
1
SimpleCustomTypeDropDownEditor

3、再添加一个属性,并用EditorAttribute 指定相应的编辑器类
1
下拉属性值编辑对话框的属性

The end.