WindowsForms. ListView, ListBox.

0

Czy istnieje jakiś sposób, by jednej z tych dwóch kontrolek itemy dodawały się w konfiguracji - po dwa na wiersz?
Tzn. chciałbym, by wyglądało to tak:

item0 item1
item2 item3
item4 item5

Lub może istnieje jakaś inna kontrolka, która to umożliwia, wraz z możliwością wywołania eventu pozwalającego odwołać się do zaznaczonego itemu (jak np. "Item Selection Changed - w przypadku ListView)

0

Chodzi Ci iż masz listę ListView lub ListBox i chciał byś mieć możliwość wbijania multum elementów.

strona http://stackoverflow.com/questions/473148/c-sharp-listview-how-do-i-add-items-to-columns-2-3-and-4-etc

 
string[] row1 = { "s1", "s2", "s3" };
listView1.Items.Add("Column1Text").SubItems.AddRange(row1);
ListViewItem item1 = new ListViewItem("Something");
item1.SubItems.Add("SubItem1a");
item1.SubItems.Add("SubItem1b");
item1.SubItems.Add("SubItem1c");

ListViewItem item2 = new ListViewItem("Something2");
item2.SubItems.Add("SubItem2a");
item2.SubItems.Add("SubItem2b");
item2.SubItems.Add("SubItem2c");

ListViewItem item3 = new ListViewItem("Something3");
item3.SubItems.Add("SubItem3a");
item3.SubItems.Add("SubItem3b");
item3.SubItems.Add("SubItem3c");

ListView1.Items.AddRange(new ListViewItem[] {item1,item2,item3});
 
0

Dla SubItems nie mogę zidentyfikować indexu(chyba, że o czymś nie wiem), dlatego zdecydowanie wolałbym, aby każdy element był osobnym itemem.

0

Jest pewne obejście tylko pytanie po co ci To i co chcesz z tym dalej robić. Oraz jak chcesz to wykorzystać.

Rozwiązanie kiedy do każdego powiedz itemu chcesz podczepić jakąś kontrolkę lub szereg kontrolek to możesz to robić na dwojaki sposób.

To jest prosty przykład. Widziałem inne gdzie wrzucało się 2 object na raz w listView. A odwołujesz się do nich tak jak do normalnych kontrolek. W sytuacji gdy chcesz np sprawdzić w jakim inexie ona jest albo jakby to tak powiedzieć chcesz w niej coś zmienić i nie używajac indexów to inna bajka. Ale też można to zrobić to Ci napisze potem jak.


            StackPanel myStackPanel = new StackPanel();               // tworzysz stack panel
            myStackPanel.Orientation = Orientation.Horizontal;

            /* Informacje o logach */                                      // tworzysz jeden obiekt
            Label logsLabel = new Label();                              // tutaj jest to label
            logsLabel.Content = logs.ToString();
            logsLabel.Foreground = logs.MyBrush();
            logsLabel.FontSize = logs.FontSize();



            /* Dodawanie zdjęcia */
            Image myImage = new Image();                              // tworzysz 2 obiekt
            myImage.Source = logs.ImageFile();
            myImage.Width = 20;
            myImage.Height = 20;



            /*Dodawanie do panelu */
            myStackPanel.Children.Add(myImage);                    // dodajesz obiekty do panelu
            myStackPanel.Children.Add(logsLabel);             

            /* Dodanie Panelu */
            myListBox.Items.Add(myStackPanel);                     // panel umieszczasz w listboxie np 
 
0

a tak btw jak chcesz zrobić odwołanie się np do jakiejś kontrolki na przykładzie prostego buttona ;)

Button myButton = new Button();
myButton.Click += metchod;

gdy klikasz wywołujesz metchod tak zdeklarowana

private void metchod(object sender, EventArgs e)
{
    Button ChooseButton = (Button)sender; // Odwołanie się do kontrolki która wywołała akcję za pomocą sender ;)
    MessageBox.Show("Cześć wybrałeś przycisk z text " + ChooseButton.Text); // przykład już po inicjacji wybranej kontrolki
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1