您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 采用C#WPF实现自己的网页浏览器(自定义Tab控件)
采用C#WPF实现自己的网页浏览器(自定义Tab控件)采用C#WPF实现自己的网页浏览器(自定义Tab控件)时间:2012-06-1218:51来源:CSDN作者:chenyujing1234点击:108次编译平台:VS2008+.NetFramework3.5语言:C#此博客的目的:以浏览器程序的实现,学习自定义TabControl的方法,使之能实现系统Tab不具有的功能:(1)排列方式扩展为:Top、Bottom、Left、Right(2)增加对TabItem的事件处理(3)一、浏览器实现效果图:1、启动窗口显示两个按钮1、首先导入我们自己写的控件它们编译平台:VS2008+.NetFramework3.5语言:C#此博客的目的:以浏览器程序的实现,学习自定义TabControl的方法,使之能实现系统Tab不具有的功能:(1)排列方式扩展为:Top、Bottom、Left、Right(2)增加对TabItem的事件处理(3)一、浏览器实现效果图:1、启动窗口显示两个按钮1、首先导入我们自己写的控件它们的处理函数对应是去创建窗口WindowUsingItemProperty或WindowUsingItemsSourcePropertyprivatevoidItems_Click(objectsender,RoutedEventArgse){//WindowUsingItemProperty对应于WindowUsingItemsProperty.xaml文件中的//<Windowx:Class=Test.WindowUsingItemPropertyvarwin=newWindowUsingItemProperty();win.Show();}privatevoidItemsSource_Click(objectsender,RoutedEventArgse){varwin=newWindowUsingItemsSourceProperty();win.Show();}接下来的设计我们以WindowUsingItemProperty为例来说明.2、加入自定义控件Wpf.TabControl在WindowUsingItemProperty窗口的界面设计文件WindowUsingItemProperty.xaml中加入自定义控件Wpf.TabControl.3、浏览器界面控件布局首先将界面分为三行:3、1每一行加入TextBlock与TextBox,用于输入网址当输入网址确认后的处理是获得浏览器对象并让浏览器导航到指定的网址privatevoidtextBox_KeyDown(objectsender,System.Windows.Input.KeyEventArgse){//按了回车键if(e.Key==Key.Return){try{//鼠标变成等待Cursor=System.Windows.Input.Cursors.Wait;//通过自己封闭的函数GetCurrentWebBrowser获得当前的浏览器System.Windows.Forms.WebBrowserbrowser=GetCurrentWebBrowser();if(browser==null)return;//浏览器导航到指定的网址browser.Navigate(textBox.Text);}finally{Cursor=System.Windows.Input.Cursors.Arrow;}}}而浏览器的获得是通过当前TabItem来得到的privateSystem.Windows.Forms.WebBrowserGetCurrentWebBrowser(){//获得TabControl当前选择的TabItemWpf.Controls.TabItemitem=tabControl.SelectedItemasWpf.Controls.TabItem;if(item==null)returnnull;//获得选中的TabItem中的Content,并转化为WindowFormsHostWindowsFormsHosthost=item.ContentasWindowsFormsHost;if(host==null)returnnull;//获得WindowFormsHost的Child,来得到浏览器对象System.Windows.Forms.WebBrowserbrowser=host.ChildasSystem.Windows.Forms.WebBrowser;returnbrowser;}3、2根据自定义控件TabControl的规则加入节点请注意空间r:的原因。3、2、1对TabControl中的TabItem显示的三种状态进行设置。目的是为了看起来像IE7的样子。3、2、2加入TabItemTabItem中包括了对Header、Icon的设置,及在Item中的内容中包裹WebI浏览器在3、1中我们看到GetCurrentWebBrowser的获得有两个步骤:(1)获得选中的TabItem中的Content,并转化为WindowFormsHost(2)获得WindowFormsHost的Child,来得到浏览器对象//获得选中的TabItem中的Content,并转化为WindowFormsHostWindowsFormsHosthost=item.ContentasWindowsFormsHost;if(host==null)returnnull;//获得WindowFormsHost的Child,来得到浏览器对象System.Windows.Forms.WebBrowserbrowser=host.ChildasSystem.Windows.Forms.WebBrowser;3、2、2、1浏览器DocumentTitleChanged、Navigated两个事件的处理Browser_DocumentTitleChanged主要是更新TabItems的头特性、增加一个Icon到tabItem、把浏览器的DocumentTitle加入到tabItem中的Head中voidBrowser_DocumentTitleChanged(objectsender,EventArgse){System.Windows.Forms.WebBrowserbrowser=senderasSystem.Windows.Forms.WebBrowser;if(browser==null)return;//更新TabItems的头特性Wpf.Controls.TabItemitem=tabControl.SelectedItemasWpf.Controls.TabItem;//增加一个Icon到tabItemBitmapImageimage=newBitmapImage(newUri(pack://application:,,,/Test;component/Images/ie.ico));Imageimg=newImage();img.Source=image;img.Width=16;img.Height=16;img.Margin=newThickness(2,0,2,0);if(item!=null)item.Icon=img;//把浏览器的DocumentTitle加入到tabItem中的Head中TextBlocktb=newTextBlock();tb.Text=browser.DocumentTitle;tb.TextTrimming=TextTrimming.CharacterEllipsis;tb.TextWrapping=TextWrapping.NoWrap;if(item!=null)item.Header=tb;}Browser_Navigated主要是将浏览器当前的网址传给textBoxvoidBrowser_Navigated(objectsender,WebBrowserNavigatedEventArgse){//获得Web浏览器System.Windows.Forms.WebBrowserbrowser=senderasSystem.Windows.Forms.WebBrowser;if(browser==null)return;//将浏览器当前的网址传给textBoxtextBox.Text=browser.Url.ToString();}
本文标题:采用C#WPF实现自己的网页浏览器(自定义Tab控件)
链接地址:https://www.777doc.com/doc-4298215 .html