知识大全 C#使用双链表来实现模拟IE前进后退功能
Posted 知
篇首语:没有风暴,船帆只不过是一块破布。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#使用双链表来实现模拟IE前进后退功能相关的知识,希望对你有一定的参考价值。
C#使用双链表来实现模拟IE前进后退功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
简单的测试了一下IE前进和后退的过程
依次访问网站A B C D
后退至 B
然后重新请求网站E
则记录的保存顺序则是 A B E
C D将会从记录列表中删除
下面看代码(以下操作均在内存中进行):
一个History对象 用来生成一个记录对象 该对象包含 url title 三个属性
Codeclass Historyprivate string Title_ = ;private string WmlSource_ = ;private string Url_ = ;public string Titleget return Title_; set Title_ = value; public string WmlSourceget return WmlSource_; set WmlSource_ = value; public string Urlget return Url_; set Url_ = value; public History()
public History(string t string w string u)Title_ = t;WmlSource_ = w;Url_ = u;
HistoryAction是对链表操作静态类 具体看代码注释
Codeclass HistoryAction//活动节点对象 即当前的节点对象private static LinkedListNode<History> HistoryCurrentNode= null;//全局的链表对象 所以记录均保存到该对象中private static LinkedList<History> HistoryList = new LinkedList<History>();//设置保存最大条数 当达到该条数时 每次增加记录时 均依次删除原有记录private static int MaxList = ;/**//// <summary>/// 或取当前的记录信息/// </summary>public static History CurrentHistoryget return (History)HistoryCurrentNode Value; /**//// <summary>/// 当前后退时否可用 用于设置按钮状态信息/// </summary>public static bool IsBackgetreturn HistoryCurrentNode Next == null ? false : true;/**//// <summary>/// 当前前进时否可用 用于设置按钮状态信息/// </summary>public static bool IsGogetreturn HistoryCurrentNode Previous == null ? false : true;/**//// <summary>/// 向历史记录链表中加入新的节点/// </summary>/// <param name= h ></param>public static void Add(History h)LinkedListNode<History> tem = HistoryList First;//如果连续加入url相同的记录 则只加入一次 可以根据自已情况设置if (tem!=null && ((History)tem Value) Url ToLower() == h Url ToLower())return;
//当当前节点不为空 或该节点的上一个节点也不为空时 则删除该节点的前所有节点(模拟IE)//模拟IE对前进后退的处理if (HistoryCurrentNode != null && HistoryCurrentNode Previous != null)DelNode(HistoryCurrentNode);
//处理限制最大记录条数if (MaxList > )if (HistoryList Count + > MaxList)HistoryList RemoveLast();HistoryCurrentNode = new LinkedListNode<History>(h);HistoryList AddFirst(HistoryCurrentNode);/**//// <summary>/// 后退/// </summary>public static void Back()HistoryCurrentNode = HistoryCurrentNode Next;/**//// <summary>/// 前进/// </summary>public static void Go()HistoryCurrentNode = HistoryCurrentNode Previous;/**//// <summary>/// 删除指定节点前所有节点/// </summary>/// <param name= node ></param>private static void DelNode(LinkedListNode<History> node)while (node Previous != null)HistoryList Remove(node Previous);
页面调用方法
Codeprivate void AddHistory(string title string wmlsource string url) //将记录加到列表中History h = new History();h Title = title;h WmlSource = wmlsource;h Url = url;HistoryAction Add(h);RefurbishGoBackButton(); //刷新按钮状态 由自已定义
private void Back() //后退HistoryAction Back();History h = HistoryAction CurrentHistory; //获取后退后的History对象LoadHistory(h); //处理该对象 由自已定义 RefurbishGoBackButton();//刷新按钮状态 由自已定义
private void Go() //前进HistoryAction Go();History h = HistoryAction CurrentHistory;LoadHistory(h); //处理该对象 由自已定义 RefurbishGoBackButton();//刷新按钮状态 由自已定义
OK 搞定 实际上非常简单 这里可以看到LinkedList的方便之处了 对性能的处理请自已把握
cha138/Article/program/net/201311/12193相关参考
知识大全 javascript模拟实现C# String.format函数功能代码
javascript模拟实现C#String.format函数功能代码 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶
C#实现IE浏览器添加快捷菜单 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! C#实现IE浏览器
如何用C#设置IE的代理 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
分为单控和双控两种。 单控只能控制前进,遥控后退时带转弯或自动后退转弯。双控可控制前后左右移动,前进后退,转弯等。遥控车中体积较大、价格较贵品种一般都有充电器接口,在车内入上充电电池后可直接充电,一
C#实现遗传算法模拟花朵的进化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 以下代码实
知识大全 用javascript模拟C#的[Attribute]用法
用javascript模拟C#的[Attribute]用法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
javascript做页面后退常使用的方法是 windowhistoryback(); 这样确实可以做到后退的功能但是项目中常常并不只是后退就能完成需求往往需要在后退的同时刷新后退的页面信息比
怎么禁止浏览器的后退按钮?浏览器的后退按钮使得我们能够方便地返回以前访问过的页面它无疑非常有用但有时候我们不得不关闭这个功能以防止用户打乱预定的页面访问次序本文介绍网络上可找到的各种禁用浏览器后退
双链表双向链表(DoubleLinkedList) 双(向)链表中有两条方向不同的链即每个结点中除next域存放后继结点地址外还增加一个指向其直接前趋的指针域pri
双向链表(DoubleLinkedList) 双(向)链表中有两条方向不同的链即每个结点中除next域存放后继结点地址外还增加一个指向其直接前趋的指针域 prior > 注意 ①双链表由