2015-07-16 3 views
0

В C++ Builder X Е8, я использую следующие методы, чтобы вставить элемент в ComboBox:Как найти и заменить элементы в ComboBox

MyComboBox->Items->BeginUpdate(); 
MyComboBox->Items->Insert(0, "Title"); 
MyComboBox->Items->Insert(1, "Google"); 
MyComboBox->Items->Insert(2, "Yahoo"); 
MyComboBox->Items->Insert(3, "127.0.0.1"); 
MyComboBox->ItemIndex = 0; 
MyComboBox->Items->EndUpdate(); 

Я хочу знать, как заменить 3-й пункт , 127.0.0.1, до "xxx.0.0.1". Я пробовал использовать StringReplace(), но не повезло.

+0

«* Я пытался использовать stringreplace, но не повезло *» - для справок в будущем, когда вы говорите, что что-то не работает, всегда показывайте, что вы на самом деле пытались, что не работает. –

+0

Хорошо, спасибо за ваш совет. это очень полезно для меня, чтобы обсудить с лучшей стороны. –

ответ

2

Во-первых, ваш пример должен использовать Add() вместо Insert()try/__finally блок или RAII обёртку, в случае брошено исключение):

MyComboBox->Items->BeginUpdate(); 
try { 
    MyComboBox->Items->Add("Title"); 
    MyComboBox->Items->Add("Google"); 
    MyComboBox->Items->Add("Yahoo"); 
    MyComboBox->Items->Add("127.0.0.1"); 
    MyComboBox->ItemIndex = 0; 
} 
__finally { 
    MyComboBox->Items->EndUpdate(); 
} 

Теперь, с тем, что, если вы знаете, этот пункт вы хотите изменить это всегда четвертый элемент, а затем просто обновить его непосредственно:

MyComboBox->Items->Strings[3] = "xxx.0.0.1"; 

Если вам нужно искать его, используйте IndexOf():

int index = MyComboBox->Items->IndexOf("127.0.0.1"); 
if (index != -1) 
    MyComboBox->Items->Strings[index] = "xxx.0.0.1"; 
+0

Еще раз спасибо. Все, что вы ему рассказывали, работало очень хорошо. –

Смежные вопросы