采用C#WPF实现自己的网页浏览器自定义Tab控件.docx

上传人:b****5 文档编号:6469663 上传时间:2023-01-06 格式:DOCX 页数:5 大小:16.03KB
下载 相关 举报
采用C#WPF实现自己的网页浏览器自定义Tab控件.docx_第1页
第1页 / 共5页
采用C#WPF实现自己的网页浏览器自定义Tab控件.docx_第2页
第2页 / 共5页
采用C#WPF实现自己的网页浏览器自定义Tab控件.docx_第3页
第3页 / 共5页
采用C#WPF实现自己的网页浏览器自定义Tab控件.docx_第4页
第4页 / 共5页
采用C#WPF实现自己的网页浏览器自定义Tab控件.docx_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

采用C#WPF实现自己的网页浏览器自定义Tab控件.docx

《采用C#WPF实现自己的网页浏览器自定义Tab控件.docx》由会员分享,可在线阅读,更多相关《采用C#WPF实现自己的网页浏览器自定义Tab控件.docx(5页珍藏版)》请在冰豆网上搜索。

采用C#WPF实现自己的网页浏览器自定义Tab控件.docx

采用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或WindowUsingItemsSourceProperty

privatevoidItems_Click(objectsender,RoutedEventArgse)

{

//WindowUsingItemProperty对应于WindowUsingItemsProperty.xaml文件中的

//<Windowx:

Class="Test.WindowUsingItemProperty"

varwin=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当前选择的TabItem

Wpf.Controls.TabItemitem=tabControl.SelectedItemasWpf.Controls.TabItem;

if(item==null)returnnull;//获得选中的TabItem中的Content,并转化为WindowFormsHost

WindowsFormsHosthost=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加入TabItem

  TabItem中包括了对Header、Icon的设置,及在Item中的内容中包裹WebI浏览器

  

  在3、1中我们看到GetCurrentWebBrowser的获得有两个步骤:

  

(1)获得选中的TabItem中的Content,并转化为WindowFormsHost

  

(2)获得WindowFormsHost的Child,来得到浏览器对象

//获得选中的TabItem中的Content,并转化为WindowFormsHost

WindowsFormsHosthost=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到tabItem

BitmapImageimage=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主要是将浏览器当前的网址传给textBox

voidBrowser_Navigated(objectsender,WebBrowserNavigatedEventArgse)

{

//获得Web浏览器

System.Windows.Forms.WebBrowserbrowser=senderasSystem.Windows.Forms.WebBrowser;

if(browser==null)return;

//将浏览器当前的网址传给textBox

textBox.Text=browser.Url.ToString();

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1