Активированное событие в базовой форме не срабатывает - PullRequest
0 голосов
/ 29 марта 2012

введите код здесь. Я создал MDI-приложение winform, основанное на двух базовых формах: форме списка с сеткой (_ListForm) и форме данных для отображения дочерних данных (_DataForm).

Когда я загружаю унаследованную форму данныхв MDI активируется событие из базовой формы (_DataForm), и некоторые свойства устанавливаются автоматически.Когда я загружаю унаследованную форму списка (_ListForm) в MDI, активируется событие , а не .

Моя дочерняя форма не имеет (переопределенного) активированного события, нет существенной разницыв двух формах только один вызывает событие, а другой нет.

  • Я добавил обработчик событий в коде и / или с конструктором: нет триггера
  • I 'мы добавили новое активированное событие в дочернюю форму и вызвали base.onActivation (e): нет триггера

На данный момент я переместил часть кода в событие textaged (которое также происходит один раз), но почемуэто активированное событие не запускается?

Может добавлять тонны примеров кода, если необходимо, но не уверен, что отправлять.

РЕДАКТИРОВАТЬ: Забыл упомянуть, то же самое с LoadEvent - не запускается никоим образом.

РЕДАКТИРОВАТЬ: Источники согласно запросу:

_BaseForm: шрифт и общий фон (без событий)

public partial class _BaseForm : Form
{
    public _BaseForm()
    {
        InitializeComponent();
    }

_ListForm: сетка и кнопки

public partial class _ListForm : _BaseForm
{
    public _ListForm()
    {
        InitializeComponent();
        this.Activated += new EventHandler(_ListForm_Activated);
        this.DialogResult = System.Windows.Forms.DialogResult.Cancel;

        this.grid1.UltraGrid.DisplayLayout.Bands[0].Columns.ClearUnbound();
        this.grid1.UltraGrid.DisplayLayout.Override.AllowAddNew = Infragistics.Win.UltraWinGrid.AllowAddNew.No;
        this.grid1.UltraGrid.DisplayLayout.Override.AllowDelete = Infragistics.Win.DefaultableBoolean.False;
        this.grid1.UltraGrid.DisplayLayout.Override.AllowUpdate = Infragistics.Win.DefaultableBoolean.False;
        this.grid1.UltraGrid.DisplayLayout.Override.CellClickAction = Infragistics.Win.UltraWinGrid.CellClickAction.RowSelect;

        this.grid1.PopulateGridColumns += new FB.Windows.Controls.Grid.PopulateGridColumnsEventHandler(grid1_PopulateGridColumns);
        this.grid1.UltraGrid.InitializeLayout += new Infragistics.Win.UltraWinGrid.InitializeLayoutEventHandler(UltraGrid_InitializeLayout);
        this.grid1.RowSelected += new FB.Windows.Controls.Grid.RowSelectedEventHandler(grid1_RowSelected);
    }

_ListForm событие (либо в конструкторе, либо в коде из ctor):

    this.Activated += new System.EventHandler(this._ListForm_Activated);
    this.Load += new System.EventHandler(this._ListForm_Load);

Само событие:

private void _ListForm_Activated(object sender, EventArgs e)
{
    if (AutoSearchOnOpen)
    {
        button1_Click(sender, e);
        this.grid1.Focus();
        this.ActiveControl = this.grid1;
    }
    else
    {
        this.textBox1.Focus();
        this.ActiveControl = this.textBox1;
    }
}

Я знаю, что щелчок внутри активированного события будет срабатывать каждый раз, когда он активируется, но пока это не имеет значения: главная проблема в том, что все событие не сработает.Хотя событие в _DataForm (также унаследованное от _BaseForm) вызывается .

1 Ответ

0 голосов
/ 02 мая 2012

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

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