none
Массив Объектов в конструкторе. Как?! RRS feed

  • Вопрос

  • Доброго дня!

    Помогите обойти урезанную возможность в VB2010, по сравнению с VB6.

    Необходимо ВЫСТРОИТЬ РУКАМИ, в конструкторе, множество (сотни) объектов (кнопки и др.) в определенных местах формы и обрабатывать их одинаковым образом, обращаясь как к элементу массива. Вместо того, что бы прописывать события по нажанию каждой кнопки.

    Спасибо, если ответите, ОГРОМНОЕ, если поможет)))))

    8 января 2015 г. 9:34

Ответы

  • Добрый день.

    Подписываетесь на событие Click. В свойство Tag визуальных объектов записываете число (их индекс). В обработчике клика приводите sender к типу Button и анализируете его свойcтво Tag. На VB не пишу, но на C# это будет выглядеть вот так.

    Форма:

    Код метода:

    private void button1_Click(object sender, EventArgs e)
    {
        Button bt = sender as Button;
        if (bt != null)
        {
            string index = bt.Tag.ToString();
            if (index.Equals("1"))
            {
                MessageBox.Show("Привет!");
            }
            if (index.Equals("2"))
            {
                MessageBox.Show("Пока!");
            }
        }
    }

    После запуска и нажатия на первую кнопку видим Привет, при нажатии на вторую - Пока.
    14 января 2015 г. 6:21
    Отвечающий

Все ответы

  • я с вб не знаком, но какая проблема? Делаешь массив кнопочек, каждую подписывешь на событие, в событии смотришь какая конкретно кнопочка событие вызвала. На шарпе это просто. Хотя и сотни кнопок похожи на плохой дизайн.

    8 января 2015 г. 9:55
  • В VB6, в визуальном конструкторе, можно руками скопировать объект и "вставить", как элемент массива со следующим индексом. При обращении к элементам этого массива отрабатвается код такого вида:

    Private Sub Command1_Click(Index As Integer)

    End Sub

    ...А вот VB2010 даже понятия не имеет об Index во время визуального конструирования формы. Только при программном создании объекта(((

    PS про дизайн, согласен, оптимизирую по возможности)))

    8 января 2015 г. 10:06
  • Добрый день.

    Подписываетесь на событие Click. В свойство Tag визуальных объектов записываете число (их индекс). В обработчике клика приводите sender к типу Button и анализируете его свойcтво Tag. На VB не пишу, но на C# это будет выглядеть вот так.

    Форма:

    Код метода:

    private void button1_Click(object sender, EventArgs e)
    {
        Button bt = sender as Button;
        if (bt != null)
        {
            string index = bt.Tag.ToString();
            if (index.Equals("1"))
            {
                MessageBox.Show("Привет!");
            }
            if (index.Equals("2"))
            {
                MessageBox.Show("Пока!");
            }
        }
    }

    После запуска и нажатия на первую кнопку видим Привет, при нажатии на вторую - Пока.
    14 января 2015 г. 6:21
    Отвечающий