Avatar billede ahara Nybegynder
04. december 2007 - 13:26 Der er 5 kommentarer

Returnere string fra listbox

Jeg har en Form med en Knap.

Hvis jeg trykker på knappen åbnes en ny form med en ListBox i. Hvis jeg laver et enkelt klik på denne ListBox ønsker jeg at selectedItem returneres til min første Form som en string.

Hvorledes gøres dette?
Avatar billede alex_sleiborg Nybegynder
04. december 2007 - 13:49 #1
Du kan sende et form1 objektet med over når du åbner form2, ved at tilføje en form i  form2s constructer
Avatar billede aaberg Nybegynder
04. december 2007 - 13:55 #2
Opret et event i formen med listboksen som bliver affyret når listboksens SelectedItem ændre sig. Abonner på dette event i den anden form.
Avatar billede ahara Nybegynder
04. december 2007 - 14:11 #3
Kan jeg få et eksempel på det sidste
Avatar billede bvli Praktikant
04. december 2007 - 18:29 #4
using System;
using System.Windows.Forms;

delegate void SelectedEventHandler(object sender, SelectedEventArgs e);

class SelectedEventArgs : EventArgs {
   
    private object selectedValue;
    private int selectedIndex;
   
    public SelectedEventArgs(int selectedIndex, object selectedValue) {
        this.selectedIndex = selectedIndex;
        this.selectedValue = selectedValue;
    }
   
    public object SelectedValue {
        get {return selectedValue;}
    }
   
    public int SelectedIndex {
        get {return selectedIndex;}
    }
}


class Form1 : Form {
   
    public Form1() {
        Button b = new Button();
        b.Text = "&Open Form2";
        b.Click += bClicked;
        Controls.Add(b);
    }
   
    void bClicked(object sender, EventArgs e) {
        Form2 f = new Form2();
        f.SelectedIndexChanged += fSelectedIndexChanged;
        f.Show();
    }
   
    void fSelectedIndexChanged(object sender, SelectedEventArgs e) {
        MessageBox.Show("The selected value in form2 -> " + e.SelectedValue.ToString());
    }
}

class Form2 : Form {
   
    public event SelectedEventHandler SelectedIndexChanged;
   
    public Form2() {
        ListBox lb = new ListBox();
        lb.DataSource = new string[] {"item one", "item two", "item three", "item four"};
        lb.SelectedIndexChanged += lbSelectedIndexChanged;
        Controls.Add(lb);
    }
   
    void lbSelectedIndexChanged(object sender, EventArgs e) {
        ListBox lb = sender as ListBox;
        if (lb != null) {
            OnSelectedIndexChanged(new SelectedEventArgs(lb.SelectedIndex, lb.SelectedValue));
        }
    }
   
    protected virtual void OnSelectedIndexChanged(SelectedEventArgs e) {
        if (SelectedIndexChanged != null) {
            SelectedIndexChanged(this, e);
        }
    }
}

class Program {
    static void Main(string[] args) {
        Form1 f = new Form1();
        Application.Run(f);
    }
}
Avatar billede aaberg Nybegynder
12. juni 2008 - 21:08 #5
Fik du svar på dit spørgsmål?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester