Member 13019612 Ответов: 2

Найдите и покажите элемент в списке


всем привет
вопрос в том, что я хочу, чтобы пользователь поместил имя элемента в текстовое поле serch, а затем нажал на кнопку поиска, и когда этот элемент будет найден, покажите номер этого имени в другом текстовом поле, вот мой код
private void btAdd_Click(object sender, EventArgs e)
{
    tbTell.Text = tbTell.Text.ToString();

    tbName.Text += " | " + tbFamily.Text;
    listnames.Items.Add(tbName.Text+" | "+tbTell.Text);
    string number = tbTell.Text;
    tbName.Text = "";
    tbName.Focus();
}
private void btnSerch_Click(object sender, EventArgs e)
{

    listnames.FindString(tbSerch.Text);


}


но этот код не работает для поиска
но работая над добавлением имени с фамилией и номером телефона в 1 пункт списка

Что я уже пробовал:

я попытался использовать функцию find string
попробовал написать функцию для себя
но пока ничего не получалось

[no name]

Конечно, это "не работает", вы ничего не делаете с результатом вашего поиска.

2 Ответов

Рейтинг:
19

Karthik_Mahalingam

попробуйте это, исправленный код и пользовательский поиск.

private void btAdd_Click(object sender, EventArgs e)
       {
           string nameFamily = tbName.Text + " | " + tbFamily.Text;
           listnames.Items.Add(nameFamily + " | " + tbTell.Text);
       }

       private void btnSerch_Click(object sender, EventArgs e)
       {
           bool isExactNameSearch = true;
           string search  = tbSerch.Text.Trim();
           foreach (string item in listnames.Items)
           {
               var parts = item.Split('|');
               string name = parts[0].Trim();
               string number = parts[2];
               if (isExactNameSearch)
               {

                   if (name == search) // checks exact name
                   {
                       MessageBox.Show(number);
                       break;
                   }

               }
               else {
                   // contains search
                   if (name.Contains(search)) // checks exact name
                   {
                       MessageBox.Show(number);
                       break;
                   }

               }
           }


       }


Member 13019612

это хорошая работа братан
Большое спасибо
ты мне так много помог :)
< 3
но могу я спросить тебя кое о чем ?
я хочу если это возможно
когда пользователь пишет часть имени или семьи, а затем ищет и показывает номер!
я имею в виду, когда добавить в список, как это :
Джон / Винсон / 123-313-54|
и когда пользователь пишет в текстовом поле serch примерно так : winson
затем показывается 123-313-54 пользователю!
но если это невозможно, то это не важно

Karthik_Mahalingam

добро пожаловать :)

Member 13019612

пожалуйста, задайте мой второй вопрос :D
Простите, если я вас утомил
но я не хочу открывать для этого другую тему

Karthik_Mahalingam

да, можно просто добавить к этому еще одно условие.

Member 13019612

как ? :(

Karthik_Mahalingam

попробуйте понять код с помощью отладчика/точки останова.. вы должны научиться настраивать код самостоятельно



private void btnSerch_Click(object sender, EventArgs e)
{
bool isExactNameSearch = true;
string search = tbSerch.Text.Trim();
foreach (string item in listnames.Items)
{
var parts = item.Split('|');
string name = parts[0].Trim();
string family = parts[1].Trim();
string number = parts[2];
if (isExactNameSearch)
{

if (name == search || family == search) // checks exact name
{
MessageBox.Show(number);
break;
}

}
else {
// contains search
if (name.Contains(search) || family.Contains(search)) // checks exact name
{
MessageBox.Show(number);
break;
}

}
}


}

Member 13019612

да конечно спасибо за ваше время

Karthik_Mahalingam

добро пожаловать

Рейтинг:
0

Graeme_Grant

Согласно с Списка.Способ FindString (Строка) (Система.Окна.Формы)[^]:

Цитата:
Находит первый элемент в списке, который начинается с указанная строка.

Ваш список выглядит следующим образом:
listnames.Items.Add(tbName.Text+" | "+tbTell.Text);

И вы ничего не делаете со своими результатами поиска:
listnames.FindString(tbSerch.Text);

Вот поиск в Google с примерами того, как делать то, что вы хотите: winform списка текстового поиска[^]


Member 13019612

можете ли вы сказать мне, как это сделать конкретно?

Graeme_Grant

Взгляните на ссылку, которую я вам предоставил.