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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2011, 19:55   #1
Scooper
Новичок
Джуниор
 
Регистрация: 19.10.2011
Сообщений: 3
По умолчанию Как различить текст кнопки

Собственно проблема состоит в следующем:

Из файла загружается массив чисел, допустим 3 числа - 3,1,2.
Объявляется инт массив[3], числа конвертирую в инт присваиваю элементам массива. Так вот на форме есть 3 кнопки - красная, зелёная, синяя, длеаю button1.Text = Convert.ToStr(a[1]) и так далее, получаю что на красной кнопке цифра 3, на зелёной 1, на синей 2. Так вот необходимо отсортировать массив, допустим пузырьковым методом, с сортировкой массива проблем нет, но нужно чтобы кнопочки на форме визуально передвинулись таким образом, чтобы получилось что-то типа
|1 зелёная| |2 синяя| |3 красная|. Реализовал из этого всё, вплоть до того чтоб кнопочки плавно переползали каждая на своё место, при этом я различал кнопки следущим образом :

if (min == Convert.Toint(button3.Text)) тогда кнопка 3 встаёт на место кнопки 1 и так далее. для 3х чисел проблем никаких нет - 2 раза if написать, а если чисел и кнопок 20, я слышал как то можно различать по тэгам, но инфы про это не нашёл. Короч суть вопроса как сделать так, чтобы имея 20 кнопок с цифрами от 1 до 20, я мог определить имя кнопки на которой находится цифра 9:

чтобы было яснее покажу вот так

Код:
 for (int i = 0; i < 20; i++)
{
//кусок кода где ищем минимальный элемент, допустим найден - min = A[4];
if (min == Convert.ToInt(button[i].Text)) //тогда перемещаем кнопку вначало
}
я понимаю что последняя строчка это чушь, но это чисто чтобы было понятно чего я хочу.
Scooper вне форума Ответить с цитированием
Старый 19.10.2011, 20:56   #2
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

можно уточнить? Вы перемещаете кнопки, смотря, что написано на кнопке?
напишите функции:
Код:
int buttonTextCapactity(button a,button b);
функция для сравнения кнопок
Код:
void switchTwoButton(button a, button b);
функция для смены положения кнопок местами
объявите контейнер для кнопок, напишите для него индексатор, возвращающий кнопку

теперь, берем сортировку пузырьком

Код:
for(int i=0;i<buttonContainer.Count;i++)
{
    for(int j=i+1;j<buttonContainer.Count;j++)
    {
          if(buttonTextCapactity(buttonContainer[i],buttonContainer[j])<0)
          {
              switchTwoButton(buttonContainer[i],buttonContainer[j]);
          }
    }
}
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery

Последний раз редактировалось kaljan775; 19.10.2011 в 21:15.
kaljan775 вне форума Ответить с цитированием
Старый 19.10.2011, 21:30   #3
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Scooper

как сделать так, чтобы имея 20 кнопок с цифрами от 1 до 20, я мог определить имя кнопки на которой находится цифра 9:

у кнопки есть проперти Tag, куда можно засунуть любые пользовательские данные
Rififi вне форума Ответить с цитированием
Старый 20.10.2011, 00:01   #4
Scooper
Новичок
Джуниор
 
Регистрация: 19.10.2011
Сообщений: 3
По умолчанию

To kaljan775:

Корчое мне нужно визуализировать сортировку массива, элементы массива я решил отображать на кнопках, так как посчитал что так красивее. То есть я сортирую именно по тексту на кнопке. если можно сделать как то проще, то подскажите)
Scooper вне форума Ответить с цитированием
Старый 20.10.2011, 09:23   #5
KobolD
Форумчанин
 
Регистрация: 10.06.2010
Сообщений: 239
По умолчанию

Можно созранять число в теге как ты хотел в начале
Код:
        void main()
        {
            int[] Chisla = LoadFromFile(filename);//Загружаешь свои числа в массив
            Button[] myButton = new Button[Chisla.Length];//Объявляешь массив кнопок
            int X = 100;//Задаешь начальну позицию
            int Y = 100;
            const int btnSize=30;//Размер кнопки (кнопка будет квадратной)
            const int btnStep=50;//Шаг кнопки

            for (int i = 0; i < Chisla.Length; i++)
            {
                myButton[i] = new Button();
                myButton[i].Name = "btn" + i.ToString();
                myButton[i].Visible = true;
                myButton[i].Parent = this;
                myButton[i].Size = new Size(btnSize, btnSize);
                myButton[i].Location = new Point(X, Y);
                myButton[i].Enabled = true;
                //myButton[i].Click += new EventHandler(Btn_Click);//Это надо если хочешь чтобы можно было обрабатывать события когда по кнопке кликаешь
                myButton[i].BackColor = GetNextColor();// GetNextColor() - функция должна возвращать цвет для кнопки, ее сам напишеш.
                myButton[i].Tag = Chisla[i]; //твое число записываем в тег (хотя можно и в текст кнопки)
                //myButton[i].Text = Chisla[i].ToString();

                X+=btnStep;
            }


        }
        //Возвращает указатель на кнопку с заданым тегом Tag
        Button GetIngexByTag(Button[] myButton, int Tag)
        {
            foreach (Button B in myButton)
                if (int.Parse(myButton[0].Tag.ToString()) == Tag)
                    return B;
            return null;
        }
как вариант можно создать класс, куда входит кнопка и твое число для сортировки и работать уже с массивом этого класса.
Код:
        class MyButton
        {
            public int Chislo{get;set;}
            public Button btn{get;set;}
            public MyButton(int i, Button b)
            {
                this.Chislo = i;
                this.btn = b;
            }
        }
Чтобы слова не расходились с делом, нужно молчать и ничего не делать.

Последний раз редактировалось KobolD; 20.10.2011 в 09:36.
KobolD вне форума Ответить с цитированием
Старый 20.10.2011, 15:55   #6
Scooper
Новичок
Джуниор
 
Регистрация: 19.10.2011
Сообщений: 3
По умолчанию

Спасибо всем огромное)) Отличную идею подкинул KobolD с массивом кнопок. Это как раз то что мне требовалось)) Сдеал только немного по другому))
Scooper вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как менять текст при нажатии кнопки Grots Помощь студентам 4 06.09.2011 16:38
VS 2010 - как поменять текст у кнопки во время работы программы, из .cpp файла? MrRockchip Общие вопросы C/C++ 3 21.02.2011 22:44
Как изменить текст кнопки таскбара? Johnson Общие вопросы Delphi 1 16.12.2010 12:16
Как различить 16-бит exe и 32? Alex Cones Операционные системы общие вопросы 14 10.03.2010 14:58
Как различить два процесса одного приложения? viter.alex Win Api 1 31.03.2009 21:01