2010-11-22 4 views
2

Мне нужно переопределить класс ListBox, чтобы убедиться, что он возвращает строку csv всех выбранных элементов, а также должен взять строку csv и заполнить список, если это необходимо. Допустим, у меня есть этот код. Какие функции я должен переопределить и как это сделать?Переопределить элемент управления Listbox, чтобы вернуть значение конкатенированной строки

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

    } 
} 

ответ

4

Если вы хотите добавить функциональность, вы также можете добавить методы расширения, чтобы добавить эту возможность. Вот два быстрых примера: GetSelectItems для строки CSV и AddListItems из строкового массива.

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); 
     } 
    } 
+0

Отлично! Спасибо! – tHeSiD 2010-11-23 14:14:49

1

Вы уверены, что имеете в виду переопределить? Или вы действительно имеете в виду «переопределить и перегрузить»?

Я бы перегрузил метод Add, чтобы включить перегрузку, которая берет строку CSV, разбирает ее в массив строк (или List) и передает ее в AddRange.

Я бы также переопределил ToString(), чтобы вернуть значения в виде списка CSV.

+0

Спасибо! Я переопределил ToString() с определением от Zach, и я получил необходимую мне функциональность. – tHeSiD 2010-11-23 14:49:05