如题!!我发现这似乎是个很难逾越的难题!!至少对于我来说!

解决方案 »

  1.   

    你是说tabcontrol?
    这个问题太模糊了
      

  2.   

    就用TabControl就好了。。貌似不是很难实现吧。。LZ是要做自制浏览器么
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.Threading;namespace Web浏览器
    {
        public partial class mainFrame : Form
        {
            public mainFrame()
            {
                InitializeComponent();
                Navigate(this.toolStripAddress.Text);
                WebBrowser wb = (WebBrowser)tabControlMyTab.SelectedTab.Controls[0];
                wb.GoHome();
            }        private void Form1_Load(object sender, EventArgs e)
            {
               
                
            }
            // Navigates to the URL in the address box when 
            // the ENTER key is pressed while the ToolStripTextBox has focus.
            private void toolStripAddress_KeyDown(object sender, KeyEventArgs e)
            {
                
                if (e.KeyCode == Keys.Enter)
                {
                    Navigate(toolStripAddress.Text);
                    
                }
            }        private void Navigate(String address)
            {               if (String.IsNullOrEmpty(address)) return;
                if (address.Equals("about:blank")) return;
                if (!address.StartsWith("http://") &&
                    !address.StartsWith("https://"))
                {
                    address = "http://" + address;
                }
                try
                {
                    TabPage currentTabPage = tabControlMyTab.SelectedTab;
                    WebBrowser myWebBrowser;                if (0 == currentTabPage.Controls.Count)
                    {
                        myWebBrowser = new WebBrowser();
                        myWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(myWebBrowser_DocumentCompleted);
                        myWebBrowser.Navigate(new Uri(address));
                        //System.Console.Write("title:"+myWebBrowser.DocumentTitle);
                        myWebBrowser.Dock = DockStyle.Fill;
                        currentTabPage.Controls.Add(myWebBrowser);
                        myWebBrowser.FileDownload += new EventHandler(myWebBrowser_FileDownload);
                        myWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(myWebBrowser_DocumentCompleted);
                        myWebBrowser.Navigating += new WebBrowserNavigatingEventHandler(myWebBrowser_Navigating);
                        myWebBrowser.NewWindow += new CancelEventHandler(myWebBrowser_NewWindow);
                        //this.toolStripAddress.Text ="http://"+myWebBrowser.Url.ToString();
                        //currentTabPage.Text = myWebBrowser.DocumentTitle;
                    }
                    else
                    {
                        myWebBrowser = (WebBrowser)currentTabPage.Controls[0];
                        myWebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(myWebBrowser_DocumentCompleted);
                        myWebBrowser.NewWindow += new CancelEventHandler(myWebBrowser_NewWindow);
                        myWebBrowser.Navigate(new Uri(address));
                        this.toolStripAddress.Text = myWebBrowser.Url.ToString();
                        currentTabPage.Text = myWebBrowser.DocumentTitle;
                    }
                    
                }
                catch (Exception)
                {               
                    return;
                }
            }        void myWebBrowser_NewWindow(object sender, CancelEventArgs e)
            {
                string strurl; 
                WebBrowser wb = new WebBrowser();
                wb.DocumentCompleted +=new WebBrowserDocumentCompletedEventHandler(myWebBrowser_DocumentCompleted);
                wb.NewWindow += new CancelEventHandler(myWebBrowser_NewWindow);            try
                {
                    TabPage currentTabPage = tabControlMyTab.SelectedTab;
                    WebBrowser myWebBrowser = (WebBrowser)currentTabPage.Controls[0];                
                    strurl = myWebBrowser.Document.ActiveElement.GetAttribute("href");
                    if (!strurl.Contains("://"))
                        strurl = "http://" + strurl;
                    wb.Navigate(strurl);
                    e.Cancel = true;
                    tabControlMyTab.TabPages.Add(tabControlMyTab.TabPages.Count.ToString());
                    tabControlMyTab.TabPages[tabControlMyTab.TabPages.Count - 1].Controls.Add(wb);
                    //MessageBox.Show (tabControlMyTab.TabPages.Count.ToString());                wb.Dock = DockStyle.Fill;                tabControlMyTab.SelectedIndex = tabControlMyTab.TabPages.Count - 1;                //tabControl1.TabPages[tabControl1.TabPages.Count - 1].Controls.Add(wb); 
                }
                catch (Exception e2)
                {
                }
            }                void myWebBrowser_Navigating(object sender, WebBrowserNavigatingEventArgs e)
            {        }        void myWebBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
            {
                newAddress();
            }        void myWebBrowser_FileDownload(object sender, EventArgs e)
            {
            }
            private void  newAddress()
            {
                try
                {
                    TabPage currentTabPage = tabControlMyTab.SelectedTab;
                    if (0 != currentTabPage.Controls.Count)
                    {
                        WebBrowser wb = (WebBrowser)currentTabPage.Controls[0];
                        System.Console.Write(wb.DocumentTitle);                    if (wb.DocumentTitle == "")
                        {
                            this.toolStripAddress.Text = "about:blank";
                            currentTabPage.Text = "空白页";
                        }
                        else
                        {
                            this.toolStripAddress.Text = wb.Url.ToString();
                            currentTabPage.Text = wb.DocumentTitle;                    }
                    }
                }
                catch (Exception)
                {                
                }            
            }
            private void AddTabPage()
            {
                this.tabControlMyTab.TabPages.Add(new TabPage("空白页"));
            }        private void toolStripGo_Click(object sender, EventArgs e)
            {
                Navigate(toolStripAddress.Text);
               
            }        private void tabControlMytab_SelectedIndexChanged(object sender, EventArgs e)
            {
                if (0 != tabControlMyTab.SelectedTab.Controls.Count)
                {
                    WebBrowser wb = (WebBrowser)tabControlMyTab.SelectedTab.Controls[0];
                    this.toolStripAddress.Text = wb.Document.Url.ToString();
                    
                }
                else
                {
                    this.toolStripAddress.Text = "about:blank";
                }        }        private void tabControlMyTab_DoubleClick(object sender, EventArgs e)
            {
                try
                {  
                    for (int i = this.tabControlMyTab.TabCount - 1; i >= 0; i--)
                    {  
                        Point pos = this.tabControlMyTab.PointToClient(Cursor.Position);
                        if (this.tabControlMyTab.GetTabRect(i).Contains(pos))
                        {
                            if (this.tabControlMyTab.TabCount == 1) break;
                            else this.tabControlMyTab.TabPages[i].Dispose();
                            break;          
                        }
                    }
                }
                catch { }
                
            }
            private void mainFrame_DoubleClick(object sender, EventArgs e)
            {
                if (this.tabControlMyTab.ClientRectangle.Contains
                    (this.PointToClient(Cursor.Position)))
                {
                    //IsSolved = false;
                    this.tabControlMyTab_DoubleClick(sender, e);
                    //if (!IsSolved)
                    //{
                        this.AddTabPage();
                    //}
                }
            }
            private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {        }        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {        }
      

  4.   

            // 取消所有挂起的导航并停止所有动态页元素(如背景声音和动画)。
            private void toolStrip1_ItemClicked_1(object sender, ToolStripItemClickedEventArgs e)
            {
                if(e.ClickedItem.Equals(this.toolStripGoBack))
                {
                    try
                    {
                        WebBrowser wb = (WebBrowser)tabControlMyTab.SelectedTab.Controls[0];
                        wb.GoBack();
                    }
                    catch { };
                }
                if (e.ClickedItem.Equals(this.toolStripGoForward))
                {
                    try
                    {
                        WebBrowser wb = (WebBrowser)tabControlMyTab.SelectedTab.Controls[0];
                        wb.GoForward();
                    }
                    catch { };
                }
                if (e.ClickedItem.Equals(this.toolStripStop))
                {
                    WebBrowser wb = (WebBrowser)tabControlMyTab.SelectedTab.Controls[0];
                    wb.Stop();
                }
                if (e.ClickedItem.Equals(this.toolStripRefresh))
                {
                    WebBrowser wb = (WebBrowser)tabControlMyTab.SelectedTab.Controls[0];
                    wb.Refresh();
                    
                }
                if (e.ClickedItem.Equals(this.toolStripGoHome))
                {
                    WebBrowser wb = (WebBrowser)tabControlMyTab.SelectedTab.Controls[0];
                    wb.GoHome();
                    newAddress();
                }
            }        private void toolStripGo_Click_1(object sender, EventArgs e)
            {
                Navigate(toolStripAddress.Text);
              
            }        private void internet选项ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                ProcessStartInfo Info = new ProcessStartInfo();
                Info.FileName = "inetcpl.cpl";
                Process.Start(Info);  
                
            }        private void 新建ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                this.AddTabPage(); 
            }        private void tabPage1_Click(object sender, EventArgs e)
            {        }        private void 另存为sToolStripMenuItem_Click(object sender, EventArgs e)
            {
                TabPage currentTabPage = tabControlMyTab.SelectedTab;
                WebBrowser wb = (WebBrowser)currentTabPage.Controls[0];
                wb.ShowSaveAsDialog();
            }        private void 打开文件ToolStripMenuItem_Click(object sender, EventArgs e)
            {        }        private void 打印设置ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                TabPage currentTabPage = tabControlMyTab.SelectedTab;
                WebBrowser wb = (WebBrowser)currentTabPage.Controls[0];
                wb.ShowPageSetupDialog();
            }        private void 打印预览ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                TabPage currentTabPage = tabControlMyTab.SelectedTab;
                WebBrowser wb = (WebBrowser)currentTabPage.Controls[0];
                wb.ShowPrintPreviewDialog();
            }        private void 打印PToolStripMenuItem_Click(object sender, EventArgs e)
            {
                TabPage currentTabPage = tabControlMyTab.SelectedTab;
                WebBrowser wb = (WebBrowser)currentTabPage.Controls[0];
                wb.ShowPrintDialog();
            }        private void 属性ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                TabPage currentTabPage = tabControlMyTab.SelectedTab;
                WebBrowser wb = (WebBrowser)currentTabPage.Controls[0];
                wb.ShowPropertiesDialog();
            }        private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                this.Close();
            }        private void toolStripMenuItem1_Click(object sender, EventArgs e)
            {        }        private void toolStripRefresh_Click(object sender, EventArgs e)
            {        }        private void 页面源代码ToolStripMenuItem_Click(object sender, EventArgs e)
            {        }        private void 关于千千ToolStripMenuItem_Click(object sender, EventArgs e)
            {
                MessageBox.Show(" ");
            }            }
    }
      

  5.   


    不是自己做浏览器! 我只是觉得他的选项卡做的很好!!想模仿下,结果我发现tabcontrol 好像不是很方便!
      

  6.   

    那就用DEV的控件吧。里面有个XtraTabControl很牛的。。