C # Onpaint не стреляет - PullRequest
       5

C # Onpaint не стреляет

0 голосов
/ 28 октября 2011

У меня есть этот код:

    private void HandleGUI()
    {
        if (_currentForm == null)
        {
            navigationSideBar1.Visible = false;
            pnlToolbar.Visible = false;

            return;
        }

        if (_currentForm.ShowNavigationBar)
        {
            HandleNavigationButton(_currentForm);
        }

        btnSave.Visible = _currentForm.ShowSaveButton;
        btnClose.Visible = _currentForm.ShowCloseButton;
        btnSave.Paint += new PaintEventHandler(btnSave_Paint);
        navigationSideBar1.Visible = _currentForm.ShowNavigationBar;
        pnlToolbar.Visible = _currentForm.ShowToolBar;

        btnSave.Refresh();
        btnSave.Invalidate();
    }

Я зарегистрирован в событии onpaint кнопки сохранения (btnSave), но это событие не вызывается, даже когда я вызываю Refresh или Invalidate.Как это возможно?

РЕДАКТИРОВАТЬ: Вот как выглядит класс кнопки сохранения:

public class SaveButton : ButtonX
{
    public SaveButton()
    {
        this.Image = Properties.Resources.Save;
        this.Text = "Opslaan";
        this.Size = new Size(108, 39);

    }
}

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Попробуйте добавить обычную кнопку DevComponent (то есть не ее подкласс) в тестовую форму и посмотрите, запускает ли она когда-либо событие Paint.Возможно, они выставили событие Paint (чтобы их интерфейс соответствовал интерфейсу обычной кнопки), но фактически не реализовали его.

2 голосов
/ 30 марта 2012

Установка userpaint в true вызовет событие onpaint

this.SetStyle(ControlStyles.UserPaint, true);
1 голос
/ 28 октября 2011

С MSDN :

Вызов метода Invalidate не приводит к принудительному синхронному рисованию; чтобы вызвать синхронную отрисовку, вызовите метод Update после вызова метода Invalidate.

Итак, вам нужен звонок для обновления. Теперь Refresh - это просто недействительный w / update children + Update, так что теоретически о вас позаботились. Все, что я могу думать, это то, что Windows не вызывает Paint, если это действительно не нужно, то есть когда форма отображается в пользовательском интерфейсе или записывается на графическое устройство («снимок экрана» невидимого окна). Это один из случаев?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...