-
Notifications
You must be signed in to change notification settings - Fork 0
/
RepositoryItemCheckedImageComboBoxEdit.cs
108 lines (89 loc) · 3.83 KB
/
RepositoryItemCheckedImageComboBoxEdit.cs
1
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using DevExpress.Skins;
using DevExpress.XtraEditors.Registrator;
using DevExpress.XtraEditors.Repository;
using System.Drawing;
using System.Reflection;
using System.ComponentModel;
using DevExpress.XtraEditors.ViewInfo;
using System.IO;
namespace DXSample {
[UserRepositoryItem("RegisterCheckedImageComboBoxEdit")]
public class RepositoryItemCheckedImageComboBoxEdit : RepositoryItemCheckedComboBoxEdit{
static RepositoryItemCheckedImageComboBoxEdit() { RegisterCheckedImageComboBoxEdit(); }
public RepositoryItemCheckedImageComboBoxEdit() { }
public const string CustomEditName = "CheckedImageComboBoxEdit";
public override string EditorTypeName { get { return CustomEditName; } }
internal const int ImageWidth = 16, ImageHeight = 16;
public static void RegisterCheckedImageComboBoxEdit() {
Image img = null;
try {
img = (Bitmap)Bitmap.FromStream(Assembly.GetExecutingAssembly().
GetManifestResourceStream("DevExpress.CustomEditors.CustomEdit.bmp"));
}
catch {
}
EditorRegistrationInfo.Default.Editors.Add(new EditorClassInfo(CustomEditName,
typeof(CheckedImageComboBoxEdit), typeof(RepositoryItemCheckedImageComboBoxEdit),
typeof(PopupContainerEditViewInfo), new CheckedImageComboBoxEditPainter(), true, img));
}
string imageMember;
[DefaultValue(""), TypeConverter("System.Windows.Forms.Design.DataMemberFieldConverter, System.Design"),
Editor("System.Windows.Forms.Design.DataMemberFieldEditor, System.Design", typeof(System.Drawing.Design.UITypeEditor))]
public string ImageMember {
get { return imageMember; }
set {
if(imageMember != value)
imageMember = value;
}
}
bool showImagesInEditBox = false;
[DefaultValue(false)]
public bool ShowImagesInEditBox {
get { return showImagesInEditBox; }
set {
if(showImagesInEditBox != value)
showImagesInEditBox = value;
}
}
internal Image GetItemImage(int index){
object imageValue = DataAdapter.GetRowValue(index, ImageMember);
if(imageValue is Image)
return new Bitmap((Image)imageValue,
RepositoryItemCheckedImageComboBoxEdit.ImageWidth, RepositoryItemCheckedImageComboBoxEdit.ImageHeight);
if(imageValue is byte[])
return new Bitmap(ConvertToImage(imageValue as byte[]),
RepositoryItemCheckedImageComboBoxEdit.ImageWidth, RepositoryItemCheckedImageComboBoxEdit.ImageHeight);
return null;
}
Image ConvertToImage(byte[] array) {
using(MemoryStream str = new MemoryStream(array))
return Image.FromStream(str);
}
public override void Assign(RepositoryItem item) {
BeginUpdate();
try {
base.Assign(item);
RepositoryItemCheckedImageComboBoxEdit source = item as RepositoryItemCheckedImageComboBoxEdit;
if(source == null) return;
imageMember = source.ImageMember;
showImagesInEditBox = source.ShowImagesInEditBox;
}
finally {
EndUpdate();
}
}
internal bool CanShowImageInDropDown {
get {
return IsBoundMode && ImageMember != null && !ImageMember.Equals(string.Empty);
}
}
internal bool CanShowImageInEditBox {
get {
return CanShowImageInDropDown && ShowImagesInEditBox;
}
}
}
}