Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
9 / 9 / 4
Регистрация: 18.10.2012
Сообщений: 48

Как заполнить listBox так, чтобы можно было вытащить два элемента

22.11.2012, 09:58. Показов 3085. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте подскажите, как заполнить listBox так, что бы можно было вытащить два элемента.
Допустим, у меня есть база из которой я заполняю лист бокс так:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
OleDbDataAdapter cmTurn;
            MenuItem mi;
            myDictionary = new Dictionary<string, string>();
 
            string sqlTurn = "SELECT ID_TT, FIO, Passport, Telephone FROM TURNN";
 
            cmTurn = new OleDbDataAdapter(sqlTurn, conn1);
 
            DataSet ds = new DataSet();
            cmTurn.Fill(ds, "TURNN");
 
            foreach (DataRow roww in ds.Tables["TURNN"].Rows)
            {
 
                mi = new MenuItem();
                string s = roww["FIO"].ToString();
                string r = roww["Passport"].ToString();
                
                myDictionary.Add(s, r);
                listBox1.Items.Add(s);
            }
Но я заполняю её просто строкой, а мне нужно объектом, при событие в лист боксе на котором я мог бы получить Строку названия и её параметр допустим в роле параметра столбец ID, а значение люой другой столбец строки. Тобишь должен получить 'a' - название итема, 'b' - его значение.

Добавлено через 12 минут
Если заполняю через Dictionary:
C#
1
listBox1.Items.Add(myDictionary);
то как заполнить именно Первым элементом? иначе так пишет "коллекция".
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2012, 09:58
Ответы с готовыми решениями:

Как сделать так чтобы можно было ввести только дату?
Вот основная форма: Вот форма при нажатии на кнопку &quot;Добавить&quot;: Так вот мне нужно сделать так чтобы в поле &quot;Год...

Как сделать так, чтобы можно было выводить текст в форме
1. Как сделать так, чтобы можно было выводить текст в форме ? Например, как в калькуляторе - ты нажал button и оно вывело цифру, которая...

Как сделать так, чтобы можно было закрыть только текущую Форму?
Доброго времени суток. Я использую Windows Forms и язык C# для написания не большого проекта. Основным элементом Формы является...

5
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
22.11.2012, 10:51
Цитата Сообщение от mmze Посмотреть сообщение
именно Первым элементом?
для обращения к эллементам коллекции по индексу есть List<T>, Dictionary не для того. хотя упорядоченный доступ получить можно так:
C#
1
2
3
4
foreach(string dItem in myDictioonary.Values)
{
messageBox.Show(dItem);
}
Далее, это зачем?
Цитата Сообщение от mmze Посмотреть сообщение
C#
1
mi = new MenuItem();
ладно бы куда-нибудь добавлялась, но так просто в цикле создаётся кучу раз, но не используется.

P.S. естественно, если хочешь заполнять Dictionary не строками а объектами, то, как бы это не звучало, заполняй Dictionary не строками, а объектами.
C#
1
myDictionary = new Dictionary<string, myClass>();
0
9 / 9 / 4
Регистрация: 18.10.2012
Сообщений: 48
22.11.2012, 11:47  [ТС]
MenuItem она лишняя, пригодится позже, вообщем вопрос скорее не в том как достать, а в том как бы заполнить listBox и чем что бы у данного элемента было бы два значения допустим MenuItem содержит в себе .Tag и .Text в которых я мог бы хранить некоторые переменные кроме одной, но проблема, что listBox кроме как строкой я не знаю чем ещё заполняется либо писать элемент и свой класс другого выхода нет?
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
22.11.2012, 12:27
ListBox заполняется не строками, его свойство Items - это экземпляр класса ObjectCollection, которое, ка не сложно догадаться, содержит в себе коллекцию объектов.

т.е. в него добавить можно то, что унаследованно от типа object (в C# это чуть более чем абсолютно всё).
для теста можешь подобавлять экземпляры различных классов (тот же MenuItem, или даже экземпляр собственного класса), добавятся без проблем.

другое дело то, что отображаются эллементы с помощью метода .ToString() (который унаследован от класса object, а значит тоже есть у всех), но не у всех он корректно переписан.

а так... если не создавать собственные классы, то C# - явно не лучший выбор. Он требует знания объектно-ориентированного программирования, и требует опыта работы с классами/объектами.
1
9 / 9 / 4
Регистрация: 18.10.2012
Сообщений: 48
22.11.2012, 15:02  [ТС]
да но в случае с listBox нельзя вписать Item s = new Item();
а в случае с mainMenu допустим можно сделать экземпляр MenuItem s = new MenuItem;
и другое дело когда ты сразу имеешь дело с объектом или методом преобразования в строку в данном случае ListBox кроме, как через foreach и строки заполнить не получается. придется через старые добрые комбобоксы так будет удобней. спасибо
0
 Аватар для Spectral-Owl
608 / 583 / 157
Регистрация: 29.06.2010
Сообщений: 1,620
22.11.2012, 15:23
Цитата Сообщение от mmze Посмотреть сообщение
да но в случае с listBox нельзя вписать Item s = new Item();
эм... естественно. это вообще-то свойство а не класс...
Ты же не напишешь:
C#
1
2
3
4
5
6
class Human
    {
        public int Age { get; set; }
    ...
    }
    Age=new Age()
в худшем случае получится
C#
1
2
3
4
5
6
7
8
class Human
    {
        public int Age { get; set; }
    ...
    }
...
     Human a = new Human();
     a.Age = new int();
и такая-же система с ListBox.Items, вот только у данного свойства только для чтения, по этому как минимум:
C#
1
2
ListBox.ObjectCollection Items = new ListBox.ObjectCollection(listBox1,listBox1.Items);
//эта штука кстати продублирует записи в указанном лист-боксе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2012, 15:23
Помогаю со студенческими работами здесь

Как сделать так чтобы нельзя было запускать один exe файл два и более раз
Как сделать так чтобы нельзя было запускать один exe файл несколько раз: у меня в папке с проектом лежит exe файл программы как сделать так...

Как сделать так чтобы можно было кликать по кнопке только 1 раз в день?
Хаи. Описал проблему уже в заголовке. Мне нужно чтобы button1 был активен, после нажатия на нее деактивировался до завтрашнего...

Как сделать так, чтобы после нажатия кнопки можно было щелкнуть мышкой в PictureBox и там бы нарисовался круг?
В общем, допустим, что есть Button1 - добавить круг, PictureBoх, в котором этот круг рисуется и событие MouseClick, по которому должен...

Можно ли сделать так, чтобы после имени функции не нужно было бы писать круглые скобки?
Всем доброго времени суток. На С++ есть код:#include &lt;iostream&gt; void Write() { char s = &quot;Hello World&quot;; for (int i...

Сделать так, чтобы на скрине можно было выделять область при помощи курсора и сохранять ее
Здравствуйте. Хочу написать скриншотер. опыта особого нет, из за этого то и все траблы. Хочу сделать так, чтобы на скрине можно было...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru