Entwickler-Ecke

WinForms - ListBox.DisplayMember + Erweiterungsmethode


k-weddige - Sa 03.01.09 16:07
Titel: ListBox.DisplayMember + Erweiterungsmethode
Ich habe eine Listbox, die als DataSource eine BindingList<string> hat. Als Displaymember verwende ich eine Erweiterungsmethode, nur leider bewirkt das nichts:

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
public static class myStringEnhancements
{
    public static string FirstLine(this string s)
    {
        int nl = s.IndexOf("\n");
        if (nl > -1)
            return s.Remove(nl);
        else
            return s;
    }
}


C#-Quelltext
1:
2:
3:
4:
...
listBox1.DataSource = data; //BindingList<string>
listBox1.DisplayMember = "FirstLine";
...

FirstLine wird nie aufgerufen und in der ListBox werden die unbearbeiteten Daten angezeigt.
Sieht jemand den Fehler? Was habe ich übersehen?

TIA
Konstantin


jaenicke - Sa 03.01.09 16:52

Ich kenne das nicht selbst, aber in dem Beispiel wird DisplayMember anders benutzt: :gruebel:
http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.displaymember.aspx

Was soll denn dein Code bewirken? Im Moment verstehe ich das leider nicht.


Christian S. - Sa 03.01.09 16:57

Eine Extension-Method ist kein Member der erweiterten Klasse. Tatsächlich werden Extension-Methods schon zur compilezeit in die entsprechenden statischen Methoden aufgelöst.

Die Doku ist außerdem recht eindeutig darin, dass der DisplayMember eine Property sein muss. ;-)


k-weddige - Sa 03.01.09 17:31

:( Hirn vorher einschalten hilft... :oops:
v. A. wenn man weiß, dass es eine Property sein muss. :evil: