public virtual void CreateHandle() { if (NativeWindow != null) { throw new InvalidOperationException($"Cannot call {nameof(CreateHandle)}() on a {nameof(Control)} instance that already has one"); } CreateParams cp = CreateParams; cp.ParentHandle = IntPtr.Zero; NativeWindow = ControlNativeWindow.Create(this, cp); }
protected void SubclassWindow() { if (!HandleValid) { throw new InvalidOperationException("You must have a valid handle before calling this method"); } if (NativeWindow is ControlNativeWindow) { throw new InvalidOperationException("The NativeWindow has already been subclassed"); } NativeWindow = ControlNativeWindow.SubclassWindow(this, Handle, NativeWindow.OwnsHandle); }
public Control () { if (WindowsFormsSynchronizationContext.AutoInstall) if (!(SynchronizationContext.Current is WindowsFormsSynchronizationContext)) SynchronizationContext.SetSynchronizationContext (new WindowsFormsSynchronizationContext ()); layout_type = LayoutType.Anchor; anchor_style = AnchorStyles.Top | AnchorStyles.Left; is_created = false; is_visible = true; is_captured = false; is_disposed = false; is_enabled = true; is_entered = false; layout_pending = false; is_toplevel = false; causes_validation = true; has_focus = false; layout_suspended = 0; mouse_clicks = 1; tab_index = -1; cursor = null; right_to_left = RightToLeft.Inherit; border_style = BorderStyle.None; background_color = Color.Empty; dist_right = 0; dist_bottom = 0; tab_stop = true; ime_mode = ImeMode.Inherit; use_compatible_text_rendering = true; show_keyboard_cues = false; show_focus_cues = SystemInformation.MenuAccessKeysUnderlined; use_wait_cursor = false; backgroundimage_layout = ImageLayout.Tile; use_compatible_text_rendering = Application.use_compatible_text_rendering; padding = this.DefaultPadding; maximum_size = new Size(); minimum_size = new Size(); margin = this.DefaultMargin; auto_size_mode = AutoSizeMode.GrowOnly; control_style = ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.Selectable | ControlStyles.StandardClick | ControlStyles.StandardDoubleClick; control_style |= ControlStyles.UseTextForAccessibility; parent = null; background_image = null; text = string.Empty; name = string.Empty; window_target = new ControlWindowTarget(this); window = new ControlNativeWindow(this); child_controls = CreateControlsInstance(); bounds.Size = DefaultSize; client_size = ClientSizeFromSize (bounds.Size); client_rect = new Rectangle (Point.Empty, client_size); explicit_bounds = bounds; }