Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MFC - SetItemData(int,DWORD ) C# - ? 
V
    Опции темы
xTr1m
Дата 21.9.2008, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

Репутация: нет
Всего: 1



Добрый день. собственно сильно не бейте плз =))  при переходе на C# с C++  понял, что не знаю как это реализовано. В частности, если есть список чего-либо (или грид) , то каждая строчка содержит информацию о чем то конкретном ( о сотруднике, предприятии, машине и т.п.). Премного благодарен.

P.S. Может этот механизм вообче как то по-другому реализован? =))
PM MAIL WWW ICQ   Вверх
xTr1m
Дата 22.9.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

Репутация: нет
Всего: 1



Наверно криво объяснил ситуацию. У меня есть таблица, допустим, каждая строка описывает модель компьютера. В MFC я мог записать
Код

m_list.SetItemData(0, (DWORD)prtComputer);


где prtComputer - указатель на объект, описывающий компьютер. Таким образом, потом при, скажем, двойном щелчке мыши на строке такой таблицы, я мог показать свойства
этого компьютера примерно так
Код

CCompProp dlg( m_list.GetItemData(0) );
dlg.DoModal();


А как реализовать подобное на С# это?
PM MAIL WWW ICQ   Вверх
Partizan
Дата 22.9.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



xTr1m, кидается DataGridView или ListView

DataGridView более сложный контрол, и наверное не нужен в этом случае...


вот пример из MSDN для ListView:

Код

private void InitializeListView()
    {
        this.ListView1 = new System.Windows.Forms.ListView();
        this.ListView1.BackColor = System.Drawing.SystemColors.Control;
        this.ListView1.Dock = System.Windows.Forms.DockStyle.Top;
        this.ListView1.Location = new System.Drawing.Point(0, 0);
        this.ListView1.Name = "ListView1";
        this.ListView1.Size = new System.Drawing.Size(292, 130);
        this.ListView1.TabIndex = 0;
        this.ListView1.View = System.Windows.Forms.View.Details;
        this.ListView1.MultiSelect = true;
        this.ListView1.HideSelection = false;
        this.ListView1.HeaderStyle = ColumnHeaderStyle.Nonclickable;
        
        ColumnHeader columnHeader1 = new ColumnHeader();
        columnHeader1.Text = "Breakfast Item";
        columnHeader1.TextAlign = HorizontalAlignment.Left;
        columnHeader1.Width = 146;

        ColumnHeader columnHeader2 = new ColumnHeader();
        columnHeader2.Text = "Price Each";
        columnHeader2.TextAlign = HorizontalAlignment.Center;
        columnHeader2.Width = 142;

        this.ListView1.Columns.Add(columnHeader1);
        this.ListView1.Columns.Add(columnHeader2);

        string[] foodList = new string[]{"Juice", "Coffee", 
            "Cereal & Milk", "Fruit Plate", "Toast & Jelly", 
            "Bagel & Cream Cheese"};
        string[] foodPrice = new string[]{"1.09", "1.09", "2.19", 
            "2.49", "1.49", "1.49"};
        
        for(int count=0; count < foodList.Length; count++)
        {
            ListViewItem listItem = new ListViewItem(foodList[count]);
            listItem.SubItems.Add(foodPrice[count]);
            ListView1.Items.Add(listItem);
        }
        this.Controls.Add(ListView1);
    }





--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
xTr1m
Дата 22.9.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

Репутация: нет
Всего: 1



Спасибо, но вопрос был все-таки немного о другом. Нельзя ли с каждой строкой с ассоциировать некий объект. Причем это может быть объект любого типа: int , string, свой класс?
Наверно, что то типа переменной variant в Basic 
PM MAIL WWW ICQ   Вверх
Partizan
Дата 22.9.2008, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



xTr1m, у каждого ListvViewItem есть свойство Tag

Это сообщение отредактировал(а) Partizan - 22.9.2008, 19:49


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
xTr1m
Дата 23.9.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

Репутация: нет
Всего: 1



Мммм, спасибо еще раз =)). То есть Tag принимает любой объект, унаследованный от Object. А в C# любой созданный класс автоматом наследуется от Object?
То есть, если я напишу свой класс (условный код)
Код

class SomeObject
{
}


То я потом и его смогу "засунуть" в Tag. Извиняюсь,  что спрашиваю, просто до Студии не могу добраться ))
PM MAIL WWW ICQ   Вверх
Freak_FB
Дата 23.9.2008, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ктулхувед
**


Профиль
Группа: Участник
Сообщений: 296
Регистрация: 13.10.2006

Репутация: 2
Всего: 4



Все объекты являются потомками класса Object. Поэтому любой объект иможно положить в Tag.
Если используешь ListBox - можно через метод Add() добавлять непосредственно объект, а не строку. В таком случае для отображения объекта нужно переопределить метод ToString().
За другими компонентами такой функциональности, вроде бы, не замечено.


--------------------
user posted image
user posted image
Тонет Ктулху, все медведы горят в огне.
Я Креведко, очень страшно сегодня мне.

PM MAIL ICQ Skype GTalk Jabber   Вверх
Partizan
Дата 23.9.2008, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



почитайте про boxing/unboxing в .NET


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
QryStaL
Дата 23.9.2008, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 3
Всего: 32



boxing/unboxing - это немного другое. Здесь просто полиморфизм.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
Partizan
Дата 23.9.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



Никакого полиморфизма тут и в помине нет...возможно вы имели ввиду наследование...да..за счёт наследования наследник System.Object легко приводится к базовому типу

тем более когда мы суём value type в ListViewItem.Tag происходит как раз таки boxing/unboxing...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
QryStaL
Дата 23.9.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 3
Всего: 32



Нет, я имел в виду как раз полиморфизм.
Цитата(Freak_FB @  23.9.2008,  11:05 Найти цитируемый пост)
Все объекты являются потомками класса Object. Поэтому любой объект иможно положить в Tag.


А boxing/unboxing будет только для value типов, то есть не всегда.


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
xTr1m
Дата 23.9.2008, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 692
Регистрация: 9.2.2005
Где: Москва

Репутация: нет
Всего: 1



всем спасибо, разобрался
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.