System.Windows.Forms.MdiClient.ActivateChild C# (CSharp) Method

ActivateChild() private method

private ActivateChild ( Form form ) : void
form Form
return void
		internal void ActivateChild (Form form)
		{
			if (Controls.Count < 1)
				return;

			if (ParentForm.is_changing_visible_state > 0)
				return;
			
			Form current = (Form) Controls [0];
			bool raise_deactivate = ParentForm.ActiveControl == current;

			// We want to resize the new active form before it is 
			// made active to avoid flickering. Can't do it in the
			// normal way (form.WindowState = Maximized) since it's not
			// active yet and everything would just return to before. 
			// We also won't suspend layout, this way the layout will
			// happen before the form is made active (and in many cases
			// before it is visible, which avoids flickering as well).
			MdiWindowManager wm = (MdiWindowManager)form.WindowManager;
			
			if (current.WindowState == FormWindowState.Maximized && form.WindowState != FormWindowState.Maximized && form.Visible) {
				FormWindowState old_state = form.window_state;
				SetWindowState (form, old_state, FormWindowState.Maximized, true);
				wm.was_minimized = form.window_state == FormWindowState.Minimized;
				form.window_state = FormWindowState.Maximized;
				SetParentText (false);
			}

			form.BringToFront ();
			form.SendControlFocus (form);
			SetWindowStates (wm);
			if (current != form) {
				form.has_focus = false;
				if (current.IsHandleCreated)
					XplatUI.InvalidateNC (current.Handle);
				if (form.IsHandleCreated)
					XplatUI.InvalidateNC (form.Handle);
				if (raise_deactivate) {
					MdiWindowManager current_wm = (MdiWindowManager) current.window_manager;
					current_wm.RaiseDeactivate ();
					
				}
			}
			active_child = (Form) Controls [0];
			
			if (active_child.Visible) {
				bool raise_activated = ParentForm.ActiveControl != active_child;
				ParentForm.ActiveControl = active_child;
				if (raise_activated) {
					MdiWindowManager active_wm = (MdiWindowManager) active_child.window_manager;
					active_wm.RaiseActivated ();
				}
			}
		}

Usage Example

Example #1
0
        private void FormVisibleChangedHandler(object sender, EventArgs e)
        {
            if (mdi_container == null)
            {
                return;
            }

            if (form.Visible)
            {
                mdi_container.ActivateChild(form);
            }
            else if (mdi_container.Controls.Count > 1)
            {
                mdi_container.ActivateActiveMdiChild();
            }
        }
All Usage Examples Of System.Windows.Forms.MdiClient::ActivateChild