如何在组件(Component中)模拟用户控件(UserControl)中FindForm()?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms;

namespace Samples
{
    public partial class Controller : Component
    {
        public Controller()
        {
            InitializeComponent();
        }

        public Controller(IContainer container)
        {
            container.Add(this);

            InitializeComponent();
        }

        [Browsable(false)]
        public virtual Form OwnerForm
        {
            get { return _ownerForm; }
            set { _ownerForm = value; }
        }
        Form _ownerForm = null;

        public override ISite Site
        {
            get { return base.Site; }
            set
            {
                base.Site = value;
                this.OwnerForm = FindForm();
            }
        }

        Form FindForm()
        {
             IReferenceService referenceService = (IReferenceService)GetService(typeof(IReferenceService));
             if (referenceService != null)
             {
                 // 取得组件所在的窗体对象
                 object[] parent = referenceService.GetReferences(typeof(Form));
                 Form form = parent[0] as Form;
                 return form;
             }

             return null;
        }
    }
}
原文地址:https://www.cnblogs.com/eastson/p/4861641.html