_Q12_ Ответов: 1

Я не могу (повторно)инициализировать свой элемент управления при нажатии кнопки


Внутри элемента управления p1City у меня есть метод Reorder (), который переупорядочивает некоторые изображения.
Когда я нажимаю вкладку "кнопка", " public p1City()" внутри элемента управления p1City не достигается при отладке точки останова.
Однако достигается нормально, когда он начинается. (я не могу поставить весь код, так как это слишком сложно), но поверьте мне, он работает, пока я не начну нажимать кнопки.

Я вот думаю
#1
Tab01_Click недействительным(объект отправителя, EventArgs в электронной)
Управления.Удалить(p1city);
является ли удаление событием p1city?
-ИЛИ-
#2
или мне следует вручную удалить события и добавить их обратно?
удалите его с помощью : [это.Paint -= new PaintEventHandler(p1City_Paint);] (например)

Я так застрял прямо сейчас...

//inside p1City Control
public p1City()
{
    InitializeComponent();
    // if (tab1Global.isEmpy)
    {
        ReOrder();
        tab1Global.isEmpy = false;
    }
}
public void InitializeEvents()
{
    this.Paint += new PaintEventHandler(p1City_Paint);
    this.MouseMove += new MouseEventHandler(p1City_MouseMove);
}


//in Form1
public Form1()
{
    InitializeComponent();
    DoubleBuffered = true; //still Big Flickerings! but manageable
    Controls.Clear();

    InitializeButtonsEvents();
    InitializeTabsEvents();

    p1city.InitializeEvents();
{

//
Tab Tab01 = new Tab(); //it's a control named 'Tab' for some custom drawing
void InitializeTabsEvents()
{
    Tab01.Click += new EventHandler(Tab01_Click);
    Tab02.Click += new EventHandler(Tab02_Click);
}

p1City p1city = new p1City();
void Tab01_Click(object sender, EventArgs e)
{
   // for each tab i have, i remove other specific controls from the form
    Controls.Remove(p1city);
   //then I add the corespondent tab control
    Controls.Add(p1City); p1City.BringToFront();
}


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

// для каждой вкладки, которая у меня есть, я удаляю другие конкретные элементы управления из формы

1 Ответов

Рейтинг:
1

Mehdi Gholam

Позвоните своему Reorder() метод, когда он вам нужен, если вы хотите его, когда вы вводите элемент управления или когда он имеет фокус (нажатие клавиши TAB) : Контроль.Событие GotFocus (System.Окна.Формы) | Microsoft Docs[^]

Не помещайте вещь в обработчик событий paint, потому что это замедлит работу.