294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,993
Записей в блоге: 1
1

Listbox, индексы и выбор

18.02.2011, 13:57. Показов 11518. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый лень.
Есть форма с листбоксом в котором 213 элементов.
Нужно, чтоб при нажатии на любой элемент выводилась инфа в текстбоксы. Инфа известна но не последовательна (нельзя узнать следующее число - оно просто есть).
Для такого действия попробовал использовать Case - но это получится километр кода. Можно ли как-нибудь упростить это действо не прибегая к внешним файлам (чтобы всё было в проекте и на выходе 1 файл)?

C#
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
namespace BigAddon
{
    public partial class ColorChange : Form
    {
        private int R, G, B;
        {
            InitializeComponent();
        }
        private void Converter(int R, int G, int B)
        {
            textBox1.Text = Convert.ToString(R);
            textBox2.Text = Convert.ToString(G);
            textBox3.Text = Convert.ToString(B);
            label4.BackColor = Color.FromArgb(R, G, B);
        }
        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            int selectedIndex = listBox1.SelectedIndex;
 
            switch (selectedIndex)
            {
                case 0:
                    {
                        R = 203;
                        G = 190;
                        B = 142;
                        Converter(R, G, B);
                    }
                    break;
Миниатюры
Listbox, индексы и выбор  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.02.2011, 13:57
Ответы с готовыми решениями:

Передать в массив индексы ListBox
Всем привет. Подскажите плиз, как осуществить такую вещь: Есть ListBox, режим...

Получить индексы выделенных элементов ListBox
Есть ListBox с привязкой к списку ObservableCollection<T>. Нужно получить индексы выделенных...

CheckBox в ListBox. Как получить индексы выбранных элементов
Добрый вечер. Только учусь. В приложении требуется реализовать функцию удаления выбранных элементов...

Выбор в ListBox
не могу никак выполнить(( На форме располагаются: редактор Edit, занимающий центр окна;...

12
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
18.02.2011, 14:18 2
знаю в WinApi можно любой строке в листбоксе задать ещё и значение, есть ли такое в с_шарпе... не знаю, ещё не изучал.
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,993
Записей в блоге: 1
18.02.2011, 14:45  [ТС] 3
Crudelis, а как это делается средствами WinApi?
0
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
18.02.2011, 15:31 4
C++
1
2
int index = SendMessage(HWND_List,LB_ADDSTRING,0,LPARAM(TEXT("BLA-BLA"));
SendMessage(HWND_List,LB_SETITEMDATA,index,LPARAM(TEXT("AAA"));
где HWND_List - дескриптор листа
index - позиция в которую добавился элемент в лист.
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,993
Записей в блоге: 1
18.02.2011, 16:33  [ТС] 5
Может с помощью коллекции решить? Только как это оформить?
0
Шаровик затейник
696 / 445 / 78
Регистрация: 06.05.2010
Сообщений: 1,109
18.02.2011, 21:30 6
можно попробовать с помощью вот этой коллекции реализовать
http://msdn.microsoft.com/ru-r... wa508.aspx
0
Почетный модератор
Эксперт .NET
8721 / 3673 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
18.02.2011, 21:43 7
skilllab, так попробуй. Вроде то что тебе надо.
C#
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
namespace WindowsFormsApplication6
{
    using System;
    using System.Drawing;
    using System.Windows.Forms;
 
    public partial class Form1 : Form
    {
        class LIST_TAG_EX
        {
            public string Name { get; private set; }
 
            public Color Color { get; set; }
 
            public LIST_TAG_EX ( string Name, Color Color ) {
                this.Name = Name; this.Color = Color;
            }
 
            public override string ToString () {
                return this.Name;
            }
        }
 
        public Form1 () {
            InitializeComponent();
            listBox1.SelectedIndexChanged += new EventHandler(listBox1_SelectedIndexChanged);
            for (int i = 0; i < 10; ++i) {
                listBox1.Items.Add(new LIST_TAG_EX(string.Format("RAL {0:1000}", i), Color.FromArgb(i * 10, i * 15, i * 20)));
            }
        }
 
        void listBox1_SelectedIndexChanged ( object sender, EventArgs e ) {
            if (!(listBox1.SelectedItem is LIST_TAG_EX))
                return;
 
            LIST_TAG_EX tag = (LIST_TAG_EX)listBox1.SelectedItem;
            textBox1.Text = tag.Color.R.ToString();
            textBox2.Text = tag.Color.G.ToString();
            textBox3.Text = tag.Color.B.ToString();
            label4.BackColor = tag.Color;
        }
    }
}
1
288 / 233 / 33
Регистрация: 09.02.2011
Сообщений: 435
18.02.2011, 21:44 8
Ты в listbox выводи всю информацию. Допустим так: RAL 1000 203 190 142. Уменьшай размер listbox так, чтобы видно было только RAL 1000 и сделай HorizontalScrollbar=false. А потом при нажатии элемент считай всю строку и разбери её на части( выдели свои 203, 190, 142), и выводи в textBox.
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,993
Записей в блоге: 1
19.02.2011, 13:47  [ТС] 9
SSTREGG, спасибо за пример, учту на будущее.

dzjundzja88, тоже вариант.

Решил воспользоваться коллекцией. ТЕМА там же и решение.
Всем спасибо.
0
288 / 233 / 33
Регистрация: 09.02.2011
Сообщений: 435
19.02.2011, 13:54 10
В университете, когда знаний минимум, а срочно нужно сдать лабу, приходится использовать что знаешь и творить чудеса.
0
294 / 234 / 58
Регистрация: 03.02.2011
Сообщений: 1,993
Записей в блоге: 1
19.02.2011, 14:06  [ТС] 11
dzjundzja88, не, я не в универе - самостоятельное познание для написания своих плагинов к одной программе. Что в C# новичок, что в API той программы... вот и выкручиваюсь)))
+ помимо распарсивания листбокса заодно понял (на начальном уровне) работу с коллекциями.
0
288 / 233 / 33
Регистрация: 09.02.2011
Сообщений: 435
19.02.2011, 14:10 12
Вот он опыт!
0
4 / 4 / 0
Регистрация: 06.01.2012
Сообщений: 117
18.11.2013, 12:02 13
Проще всего сделать наследника ListBox и задать некоторое свойство. Затем навешать делегат при нажатии на ListBox, а затем уже можно отрабатывать событие.
0
18.11.2013, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.11.2013, 12:02
Помогаю со студенческими работами здесь

Синхронизировать индексы источника данных (списка) и списка в ListBox
Здраствуйте уважаемые программиисты! Столкнулся с такой задачей: имеется список продуктов:...

Выбор элемента ListBox
Доброго времени суток!!! Есть ListBox и textBox. Нужно значение выбранного элемента в ListBox...

ListBox выбор элементов
Мне необходимо, чтобы при выборе определённого элемента в ListBox отображался определённый текст в...

Выбор элемента listbox
У меня есть определенная коллекция, допустим сообщений электронной почты, которую я вывел на экран....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru