Скрыть несколько PictureBox кроме нажатых - PullRequest
0 голосов
/ 12 мая 2010

HI

Позвольте мне объяснить, что я хочу сделать. У меня есть Form с 10 PictureBoxes на нем. Когда я click на одном из них, я хочу спрятать все остальные, кроме одного нажал. Возможно, что на ClickEvent всех них скрываются другие. Но я прошу эффективный способ. Например, с помощью одного вызова функции из события click.

Ответы [ 2 ]

0 голосов
/ 12 мая 2010

У меня не установлен .net на этом компьютере, но вот мое решение.

Создайте тег для каждого элемента управления, затем выберите все 10 графических окон и создайте для них одно событие щелчка.

в событии click вы можете использовать этот код для циклического обхода всех элементов управления и скрытия только графических блоков.

foreach (Control ctrl in Form1.Controls)
{
    if (ctrl.GetType() == typeof(PictureBox))
    { 
        if (((PictureBox)ctrl).Tag == ((PictureBox)sender).Tag)
        {
            ctrl.Hide();
        }
        else
        {
            ctrl.Show();
        }
    }
}

Возможно, вы сможете сравнить объекты без тегов, но я не могу проверить это без c #установлен.

0 голосов
/ 12 мая 2010

Просто напишите функцию, которая принимает объект. В этой функции вы можете перебрать все эти графические окна и сравнить его с объектом. Если это объект Sender, который вы не скрываете, иначе вы это сделаете.

...