Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2011, 21:27   #1
skytechkrutoi
Новичок
Джуниор
 
Регистрация: 18.01.2011
Сообщений: 2
По умолчанию Ошибочка при поиске.

Есть программа, ищет по заданному критерию информацию и выводит её на экран.

Вот пример работы формы.

1. Слева в списке есть число 1990, я ввожу его в поле для поиска и нажимаю кнопку Find, программа успешно находит число и вывод на правый листбокс.


2. Слева в списке так же есть число 1000, оно стоит первым. Я ввожу его в поле для поиска и нажимаю кнопку Find, но ничего не происходит и с права в листбоксе это число не появляется. Методом тыка было выявленно, что не выводится либо первое, либо последнее число из левого списка. В зависимости от сортировки (по имени или по числу)


Код:

Код:
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        private Form2 addfrm;
        private myCmpFam cmpf;
        private myCmpYear cmpy;
        private System.Collections.ArrayList myList;
        public Form1()
        {
            InitializeComponent();
            myList = new System.Collections.ArrayList();
            addfrm = new Form2();
            addfrm.list = myList;
            cmpf = new myCmpFam();
            cmpy = new myCmpYear();
        }

        private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
        
        private void button1_Click(object sender, EventArgs e)
        {
            myList.Sort(cmpf);
        }

        private void button2_Click(object sender, EventArgs e)
        {
            addfrm.Show();
            
        }

        private void button3_Click(object sender, EventArgs e)
        {
            listBox1.Items.Clear();
            foreach (myListObj o in myList)
            {
                listBox1.Items.Add(o.ToString());
            }
        }

        private void button4_Click(object sender, EventArgs e)
        { 
            myListObj tmp = new myListObj();
            tmp.fam = textBox1.Text;
            tmp.year = Convert.ToInt32(textBox1.Text);
            myList.Sort(cmpy);
            if (myList.BinarySearch(tmp, cmpy) > 0) listBox2.Items.Add(tmp.fam+" "+tmp.year.ToString());
            else;
        }

        private void button5_Click(object sender, EventArgs e)
        { 
            using (System.IO.TextWriter f = new System.IO.StreamWriter("list.txt"))
            {
                f.WriteLine("LIST");
                foreach (myListObj o in myList)
                { 
                    f.WriteLine(o.fam);
                    f.WriteLine(o.year.ToString());
                }
            }
        }

        private void button6_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();

            string s = openFileDialog1.FileName;
            string tmp;
            using (System.IO.TextReader f = new System.IO.StreamReader(s))
            {
                myList.Clear();
                tmp = f.ReadLine();
                if (tmp != "LIST")
                {
                    System.Windows.Forms.MessageBox.Show("Неправельный формат файла");
                    return;
                }
                myListObj o_tmp;
                tmp=f.ReadLine();
                while (tmp != null)
                {
                    o_tmp = new myListObj();
                    o_tmp.fam = tmp;
                    tmp = f.ReadLine();
                    o_tmp.year = Convert.ToInt32(tmp);
                    myList.Add(o_tmp);
                    tmp = f.ReadLine();
                }
            }

        }

        private void button7_Click(object sender, EventArgs e)
        {
            myList.Sort(cmpy);
        }
    }
    public class myListObj
    {
        public string name;
        public string fam;
        public int year;
        override public string ToString()
        {
            return fam + " - "+year.ToString();
        }
    }
    public class myCmpFam : System.Collections.IComparer
    {

        #region Члены IComparer

        public int Compare(object x, object y)
        {
            return ((myListObj)x).fam.CompareTo(((myListObj)y).fam);
        }

        #endregion
    }
    public class myCmpYear : System.Collections.IComparer
    {

        #region Члены IComparer

        public int Compare(object x, object y)
        {
            if (((myListObj)x).year > (((myListObj)y).year)) return 1;
            else if (((myListObj)x).year < (((myListObj)y).year)) return -1;
            return 0;
        }

        #endregion
    }
}
Есть два вопроса:
1. Как сделать, чтобы в правый листбокс выводилось любое найденное из левого списка число?
2. Как сделать, чтобы в правый листбокс, вместе с найденным числом выводилась и фамилия, которая соответствует этому числу в левом списке?
skytechkrutoi вне форума Ответить с цитированием
Старый 20.01.2011, 13:01   #2
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

А Find как кнопка в коде называеться....)) лень искать её))
dampirik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод не нужного при поиске файлов coNsept Общие вопросы C/C++ 5 28.04.2010 19:11
I/O error 123 при поиске файлов [MoNAMur] Общие вопросы Delphi 2 19.01.2010 15:15
ошибка при поиске текста в файле с настройками _Mickey_ Помощь студентам 0 29.12.2009 22:11
Учетность регистра при поиске данных Proxx-asb Общие вопросы Delphi 4 28.05.2009 13:12
при поиске по базе выдает ошибку - Пропущен оператор в выражении frai БД в Delphi 1 09.11.2007 23:01