1、采用C#WPF实现自己的网页浏览器自定义Tab控件采用C#WPF实现自己的网页浏览器(自定义Tab控件) 采用C#WPF实现自己的网页浏览器(自定义Tab控件)时间:2012-06-12 18:51来源:CSDN 作者:chenyujing1234 点击:108次编译平台:VS2008 + .Net Framework 3.5 语言: C# 此博客的目的: 以浏览器程序的实现,学习自定义TabControl的方法,使之能实现系统Tab不具有的功能: (1)排列方式扩展为:Top、Bottom、Left、Right (2)增加对TabItem的事件处理 (3) 一、浏览器实现 效果图: 1、启动
2、窗口显示两个按钮 1、首先导入我们自己写的控件 它们编译平台:VS2008 + .Net Framework 3.5语言: C#此博客的目的:以浏览器程序的实现,学习自定义TabControl的方法,使之能实现系统Tab不具有的功能:(1)排列方式扩展为:Top、Bottom、Left、Right(2)增加对TabItem的事件处理(3)一、浏览器实现效果图: 1、启动窗口显示两个按钮1、首先导入我们自己写的控件 它们的处理函数对应是去创建窗口WindowUsingItemProperty或WindowUsingItemsSourceProperty private void Items_Cl
3、ick(object sender, RoutedEventArgs e) / WindowUsingItemProperty对应于WindowUsingItemsProperty.xaml文件中的 / <Window x:Class=Test.WindowUsingItemProperty var win = new WindowUsingItemProperty(); win.Show(); private void ItemsSource_Click(object sender, RoutedEventArgs e) var win = new WindowUsingItemsSo
4、urceProperty(); win.Show(); 接下来的设计我们以WindowUsingItemProperty为例来说明.2、加入自定义控件Wpf.TabControl在WindowUsingItemProperty窗口的界面设计文件WindowUsingItemProperty.xaml中加入自定义控件Wpf.TabControl. 3、浏览器界面控件布局首先将界面分为三行: 3、1 每一行加入TextBlock与TextBox,用于输入网址 当输入网址确认后的处理是获得浏览器对象并让浏览器导航到指定的网址 private void textBox_KeyDown(object s
5、ender, System.Windows.Input.KeyEventArgs e) / 按了回车键 if (e.Key = Key.Return) try / 鼠标变成等待 Cursor = System.Windows.Input.Cursors.Wait; / 通过自己封闭的函数GetCurrentWebBrowser 获得当前的浏览器 System.Windows.Forms.WebBrowser browser = GetCurrentWebBrowser(); if (browser = null) return; / 浏览器导航到指定的网址 browser.Navigate(t
6、extBox.Text); finally Cursor = System.Windows.Input.Cursors.Arrow; 而浏览器的获得是通过当前TabItem来得到的 private System.Windows.Forms.WebBrowser GetCurrentWebBrowser() / 获得TabControl当前选择的TabItem Wpf.Controls.TabItem item = tabControl.SelectedItem as Wpf.Controls.TabItem; if (item = null) return null; / 获得选中的TabIt
7、em中的Content,并转化为WindowFormsHost WindowsFormsHost host = item.Content as WindowsFormsHost; if (host = null) return null; / 获得WindowFormsHost的Child,来得到浏览器对象 System.Windows.Forms.WebBrowser browser = host.Child as System.Windows.Forms.WebBrowser; return browser; 3、2 根据自定义控件TabControl的规则加入节点请注意空间 r: 的原因
8、。 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,并转化为WindowFormsHost WindowsFormsHost
9、 host = item.Content as WindowsFormsHost; if (host = null) return null; / 获得WindowFormsHost的Child,来得到浏览器对象 System.Windows.Forms.WebBrowser browser = host.Child as System.Windows.Forms.WebBrowser;3、2、2、1 浏览器DocumentTitleChanged、Navigated两个事件的处理Browser_DocumentTitleChanged主要是更新TabItems的头特性、增加一个Icon到ta
10、bItem、把浏览器的DocumentTitle加入到tabItem中的Head中 void Browser_DocumentTitleChanged(object sender, EventArgs e) System.Windows.Forms.WebBrowser browser = sender as System.Windows.Forms.WebBrowser; if (browser = null) return; / 更新TabItems的头特性 Wpf.Controls.TabItem item = tabControl.SelectedItem as Wpf.Control
11、s.TabItem; / 增加一个Icon到tabItem BitmapImage image = new BitmapImage(new Uri(pack:/application:,/Test;component/Images/ie.ico); Image img = new Image(); img.Source = image; img.Width = 16; img.Height = 16; img.Margin = new Thickness(2, 0, 2, 0); if (item != null) item.Icon = img; / 把浏览器的DocumentTitle加入
12、到tabItem中的Head中 TextBlock tb = new TextBlock(); tb.Text= browser.DocumentTitle; tb.TextTrimming = TextTrimming.CharacterEllipsis; tb.TextWrapping = TextWrapping.NoWrap; if (item != null) item.Header = tb; Browser_Navigated主要是将浏览器当前的网址传给textBox void Browser_Navigated(object sender, WebBrowserNavigatedEventArgs e) / 获得Web浏览器 System.Windows.Forms.WebBrowser browser = sender as System.Windows.Forms.WebBrowser; if (browser = null) return; / 将浏览器当前的网址传给textBox textBox.Text = browser.Url.ToString();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1