C# 如何将导航的webbrowser控件传递给另一个窗体并显示它?

C# 如何将导航的webbrowser控件传递给另一个窗体并显示它?,c#,forms,C#,Forms,我想做的是,我有一个网络浏览器导航到一个页面,比如stackoverflow.com。我可以在我的webbrowser中看到网站图片等,这是我的主要形式。我想做一些类似弹出的事情,在弹出的BetaScreen中显示这个webbrowser。但我做不到,它只是给我显示了一个空白的白色网络浏览器在第二形式的BetaScreen 代码更新: 我通过传球得到了成功 object cache; public BetaScreen(object browser) {

我想做的是,我有一个网络浏览器导航到一个页面,比如stackoverflow.com。我可以在我的webbrowser中看到网站图片等,这是我的主要形式。我想做一些类似弹出的事情,在弹出的BetaScreen中显示这个webbrowser。但我做不到,它只是给我显示了一个空白的白色网络浏览器在第二形式的BetaScreen

代码更新:

我通过传球得到了成功

object cache;
        public BetaScreen(object browser)
        {
            InitializeComponent();
            cache = browser;
        }

        private void BetaScreen_Load(object sender, EventArgs e)
        {
            WebBrowser browser = (WebBrowser)cache;
            browser.Dock = DockStyle.Fill;
            this.Controls.Add(browser);
        }

但这一次,当您传递WebBrowser控件的同一引用时,它从我的主窗体=D发出。您需要使用反射克隆控件本身并传递它,而不是传递原始控件的引用。我进行了修改,因为那里的代码不适用于WebBrowser控件

`ShowDialog((object)wbCache);
您可以更改BetaScreen构造函数以获取WebBrowser控件

`ShowDialog((object)wbCache);

仅仅传递webbrowser当前所在的url并将其加载到弹出的webbrowser中就足够了吗?我必须这样做。每次导航都会更改图像和内容取决于图像的更改方式,您可以通过或来代替。图像不会同时显示methods@keyboardP需要帮忙吗?
PropertyInfo[] controlProperties = typeof(WebBrowser).GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

WebBrowser instance = Activator.CreateInstance<WebBrowser>();

foreach (PropertyInfo propInfo in controlProperties)
{
    if (propInfo.CanWrite)
    {
         if (propInfo.Name != "WindowTarget")
             propInfo.SetValue(instance, propInfo.GetValue(wbCache, null), null);
     }
}
using(BetaScreen form = new BetaScreen(instance))
{
    form.ShowDialog();
}
public BetaScreen(WebBrowser browser)