Има ли еквивалент на Items.AddObject в VS.NET

2 отговора 108 прегледа
#1

Има ли еквивалент на Items.AddObject в VS.NET

От съвсем скоро пробвам разни хватки с VS 2005, та ми трябва един често използван фийчър от Delphi-то, обаче не знам как да го направя:

Идеята е да си добавям във визуални контроли мои структури (обекти). Както на листбокса в Делфи мога да кажа ListBox1.Items.AddObject(MyObject.MakeIndexString, MyObject), така би трябвало да мога и в VS. Обаче в тия му контроли само CollectionItem има, който си настоява в него да слагам само ListItem.
Това ми трябва, за да мога да асоциирам индекс от контролата с обект, без да се налага да поддържам допълнителен списък (в VS, доколкото разбрах, такава работа ще ми свърши ArrayList) от моите обекти.

Всякакви предложения са уелкъм :-)

PS: Това се опитвам да го постна за трети път и все се чупи връзката с MySQL-а на дир-а. Ако се получат трите теми наведнъж, голем срам :-((

Отговор
в отговор на c1ick #2

Re: Има ли еквивалент на Items.AddObject в VS.NET

Не виждам какъв е проблема ..


public class MyClass {
int x;
int y;
public override string ToString() {
return "x and y are dummy";
}
}

и после

private void button1_Click(object sender, System.EventArgs e) {
lb.Items.Add(new MyClass());
}


Добавя се обект, който после можеш да кастнеш към MyClass, и в бокса се изписва това, което връща ToString() ... или нещо не разбирам въпроса?

-------------
Special killer double trouble triple extra nicotine monster!
Отговор
в отговор на c1ick #3

Re: Има ли еквивалент на Items.AddObject в VS.NET

Начи zfree ти е казал как става, само че има оше един момент за контроли като Tree - там node-овете ти са TreeNode и съответно за да асоциираш собствен обект трябва да го пъхнеш в пропертито Tag на съответния TreeNode. Това е стандарт за всички контроли, в които не можеш да пъхаш произволен обект, а имаш аналог на TreeNode.

//adding the node
MyClass mci = new MyClass();
TreeNode node = new TreeNode("MyNode");
node.Tag = mci;
this.tree.Nodes.Add(node);

//on click
MyClass mci = this.tree.SelectedNode.Tag as MyClass;
Debug.Trace(mci.ToString());

Благородникът има само една дума и аз ви дадох своята

Редактирано от Desenchante на

Отговор