ListBox в C # не видит мой переопределенный метод Sort () - PullRequest
1 голос
/ 28 мая 2011

Я пытаюсь переопределить метод Sort () в моем пользовательском элементе управления. Когда мой элемент управления содержит ListBox, а затем я переопределяю метод Sort (), все работает.

Но когда я хочу, чтобы мой ListBox (1) был расширен другим ListBox (2) , который содержит метод Sort (), а затем добавьте этот ListBox ( 1) в мой UserControl, затем он тоже сортируется, но не использует мой метод Sort () (похоже, он не видит мой Sort (), просто обычный Sort () из класса ListBox).

My ListBox (2) содержит код:

//...
public class MyListBox: ListBox
{
    public MyListBox
    {    
        this.Sorted = true;
    }
    // more methods
    override protected void Sort() 
    {
        // sorting code
    }
}
//...

А мой пользовательский элемент управления выглядит так:

//...
public partial class MyControl: UserControl
{
    public MyControl()
    {
        InitializeComponent(); // method in MyControl.Designer.cs (myListBox1 is declared in that class)
    }
    // more methods
    public ListBox.ObjectCollection Item //that's because I want my control to behavior like ListBox instead of creating void AddItem(Object) method, etc...
    {
        get { return myListBox1.Items; }
    }
}        

так что я думаю, что все должно работать, но это не ... Есть идеи?

Ответы [ 2 ]

2 голосов
/ 28 мая 2011

Если вы вызываете вашу сортировку, может потребоваться привести ваш ListBox к вашему пользовательскому типу ListBox (если он в базовом типе), чтобы использовать указанный вами метод сортировки.

((MyListBox)myList).Sort();

Вы должны использовать переопределенный ListBox с его правильным типом, я имею в виду использовать его как MyListBox, а не как ListBox.Не бойтесь, что вам нужно реализовать все другие методы, вы переопределяете существующий класс, а не интерфейс.Вы можете использовать все необходимые базовые методы.

1 голос
/ 28 мая 2011

Если я правильно понимаю, myListBox1 относится к типу ListBox, а не к типу MyListBox, поэтому ваша сортировка не вызывается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...