Страница: 1 |
Вопрос: Как вставить в ComboBox системные цвета | Добавлено: 06.07.04 15:15 |
Автор вопроса: ![]() |
Привет всем!
VB.NET 2003 Пытаюсь вставить в ComboBox спсиок системных цветов: Dim kColor As KnownColor For kColor = KnownColor.AliceBlue To KnownColor.YellowGreen ComboBoxItemColor.Items.Add(kColor) Next Список в "комбике" есть, но надо еще чтобы было видно реальный цвет - цветное представление рядом с наименованием цвета. По этой ссылке: http://www.vbaccelerator.com/home/NET/Code/Controls/ListBox_and_ComboBox/Reusing_the_Combo_Dropdown/article.asp есть прекрасный пример, того что мне надо, но исполнен на C# (с исходниками), как я не пытался реализовать тоже самое на VB.NET ничего у меня не получилось. Кроме списка в "комбике" я ничего не увидел. Кто сталкивался с такой задачей, подскажите пожалуйста решение. |
Ответы | Всего ответов: 4 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #1 | Добавлено: 07.07.04 10:49 |
а какой там способ советуют не через DrawItem случайно? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 3 Ответов: 9 |
Профиль | Цитата | #2 | Добавлено: 07.07.04 11:27 |
В VB.NET есть утилита, конвертирует C# -> VB.NET
Конвертни, нормально получается, правда немного надо будет поправить... |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 15 Ответов: 72 |
Профиль | Цитата | #3 | Добавлено: 07.07.04 23:20 |
Пробовал я эти конвертилки.
Да нет так как проходит эта "косноязычная" конвертация, то это трата времени. После них (конвертаций) надо еще вкуривать и в C# и в VB решения искать. Не годится. Вот на С# работающий код: else if( color == Color.FloralWhite ) { strColorName = "Floral White"; } а сконвертило оно так: If color = Color.FloralWhite Then ' strColorName = "Floral White" End If И ЭТО ОШИБКА. И будешь ты ее искать днями. А оказывается надо было вот так: If Color.Equals(Color.FloralWhite) Then ' strColorName = "Floral White" End If И работает. Так вот такого кода после конвертации, ну просто не в проворот. И кому надо такие конвертации. А если еще API подмешано, то считай пропало. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 15 Ответов: 72 |
Профиль | Цитата | #4 | Добавлено: 07.07.04 23:29 |
Спасибо Всем!
Благодаря доброму человеку "Peter Fleischer" (из форума RSDN - http://www.rsdn.ru/Users/Profile.aspx?uid=28181) проблема решена. Цитата: ================================= Побробуй этот вариант: ![]() ![]() Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click names = [Enum].GetNames(GetType(System.Drawing.KnownColor)) values = [Enum].GetValues(GetType(System.Drawing.KnownColor)) ![]() With ComboBox1 .DrawMode = DrawMode.OwnerDrawFixed AddHandler .DrawItem, AddressOf PaintColor For i = 0 To names.Length - 1 .Items.Add(String.Format("{0} = {1}", names(i), CInt(values.GetValue(i)))) Next End With End Sub Private Sub PaintColor(ByVal sender As Object, ByVal e As DrawItemEventArgs) ![]() e.DrawBackground() ![]() e.Bounds.Height, e.Bounds.Height - 4) e.Graphics.FillRectangle(New SolidBrush(System.Drawing.Color.FromName(names(e.Index))), rectangle) e.Graphics.DrawString(names(e.Index), e.Font, System.Drawing.Brushes.Black, _ New RectangleF(e.Bounds.X + rectangle.Width, e.Bounds.Y, _ e.Bounds.Width, e.Bounds.Height)) e.DrawFocusRectangle() End Sub Peter Конец цитаты ====================== Две конструкции решили вопрос полностью. Заметьте, не пять классов + контрол + API как в примере по моей ссылке (см. выше). Конечно чуток под свои требования подправить пришлось, но всего лишь в координатах rectangle. С уважением Oleg K |
Страница: 1 |
|