Frage

Ich habe die List-Klasse neu zu definieren, um sicherzustellen, dass es eine CSV-Zeichenfolge aller ausgewählten Elemente zurückgibt und auch in eine CSV-Zeichenfolge nehmen und das Listenfeld zu füllen, wenn nötig. Lassen Sie uns sagen ich diesen Code haben. Was sind die Funktionen, dass ich außer Kraft setzen müssen, und wie kann ich es tun?

using System;
using System.Web.UI.WebControls;
using System.ComponentModel;
namespace MY.WebControl
{
    public class ListBoxString : ListBox
    {

    }
}
War es hilfreich?

Lösung

Wenn alles, was Sie tun möchten, Add-Funktionalität ist, können Sie auch Erweiterungsmethoden hinzufügen diese Fähigkeit hinzuzufügen. Hier sind zwei kurze Beispiele, dass GetSelectItems in ein CSV-String und AddListItems aus einem String-Array.

    public static string GetSelectedItems(this ListBox lbox)
    {
        List<string> selectedValues = new List<string>();

        int[] selectedIndeces = lbox.GetSelectedIndices();

        foreach (int i in selectedIndeces)
            selectedValues.Add(lbox.Items[i].Value);

        return String.Join(",",selectedValues.ToArray());
    }

    public static void SetSelectedItems(this ListBox lbox, string[] values)
    {
        foreach (string value in values)
        {
            lbox.Items[lbox.Items.IndexOf(lbox.Items.FindByValue(value))].Selected = true;
        }
    }

    public static void AddListItems(this ListBox lbox, string[] values)
    {
        foreach (string value in values)
        {
            ListItem item = new ListItem(value);
            lbox.Items.Add(item);
        }
    }

Andere Tipps

Sind Sie sicher, dass Sie meinen, überschreiben? Oder haben Sie wirklich bedeuten „überschreiben und Überlastung als angemessen?“

Ich würde die Add-Methode Überlastung eine Überlastung enthalten, die eine CSV-String nimmt, analysieren sie in ein Array von Strings (oder List) und übergeben es an AddRange.

Ich würde auch ToString () überschreiben die Werte als CSV-Liste zurückzukehren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top