Использование свойств объектов в списке - PullRequest
2 голосов
/ 30 июля 2010

У меня здесь есть этот маленький кусочек кода, который самопроизвольно распространяет информацию до бесконечности каждый раз, когда вызывается соответствующий метод:

if (this.ListBox_MyListBox.Items[e.Index] is MyObject)
                    {
                        MyObject epicObject= new MyObject();
                        epicObject= (MyObject)this.ListBox_MyListBox.Items[e.Index];
                        epicObject.Name = epicObject.Name + " (label)";

Данный метод является событием щелчка, и, к сожалению, каждыйкогда я нажимаю, он добавляет еще один «(ярлык)» в конец строки имени.

В других местах у меня очень похожая ситуация, в которой не требуется приведение

if (this.ListBox_MyListBox.Items[e.Index] is String)
                    {
    string tag = (string)this.ListBox_SmartSetOptions.Items[e.Index]+ " (tag)";

и этот код работает отлично.

Я думал, что объявление нового объекта каждый раз позволит избежать бесконечного повторения, но это все еще происходит.Чего мне не хватает?

Ответы [ 2 ]

3 голосов
/ 30 июля 2010

Если вы хотите добавить " (label)" только один раз, вы можете сделать что-то вроде этого:

if (!epicObject.Name.EndsWith(" (label)"))
{
    epicObject.Name += " (label)";
}

Это то, что вы пытаетесь сделать?

Когда вы добавляете " (label)" для свойства .Name, свойство .Name заменяется новой строкой, которую вы создаете с " (label)" в конце.

0 голосов
/ 30 июля 2010

Этот код выглядит для меня ужасно странно, я думаю, вы пытаетесь сделать что-то более похожее на

if (this.ListBox_MyListBox.Items[e.Index] is MyObject) 
                { 
                    epicObject.Name = ((MyObject)this.ListBox_MyListBox.Items[e.Index]).Name + " (label)"; 

Причина, по которой вы получаете приложение в ListBox, заключается в том, что вы устанавливаете epicObject для элемента в ListBox, который фактически делает его ссылкой на объект, а затем изменяет свойство Name в epicObject и изменяет свойство name это ссылки - элемент в ListBox. Код, который я перечислил выше, просто устанавливает ваш epicObject.name на выбранное имя + "(label)"; не изменяет элемент списка.

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