亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tabstub.cs

?? Magic Library 1.7,有說明文檔
?? CS
?? 第 1 頁 / 共 2 頁
字號:
//*****************************************************************************
//
//  (c) Crownwood Consulting Limited 2002
//  All rights reserved. The software and associated documentation
//  supplied hereunder are the proprietary information of Crownwood Consulting
//	Limited, Haxey, North Lincolnshire, England and are supplied subject to
//	licence terms.
//
//  Magic Version 1.7 	www.dotnetmagic.com
// *****************************************************************************

using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
using System.ComponentModel;
using Microsoft.Win32;
using Crownwood.Magic.Win32;
using Crownwood.Magic.Common;
using Crownwood.Magic.Controls;
using Crownwood.Magic.Collections;

namespace Crownwood.Magic.Docking
{
    [ToolboxItem(false)]
    public class TabStub : UserControl
    {
		private class DrawTab
		{
			protected int _index;
			protected Rectangle _drawRect;
            protected Crownwood.Magic.Controls.TabPage _tabPage;

			public DrawTab(Crownwood.Magic.Controls.TabPage tabPage, Rectangle drawRect, int index)
			{
				_index = index;
				_tabPage = tabPage;
				_drawRect = drawRect;
			}

			public Crownwood.Magic.Controls.TabPage TabPage  { get { return _tabPage; } }
            public Rectangle DrawRect                        { get { return _drawRect; } }
			public int Index                                 { get { return _index; } }
		}

        // Class constants
		protected static int _imageGap = 3;
		protected static int _imageGaps = 6;
        protected static int _imageVector = 16;
        protected static int _beginGap = 2;
        protected static int _endGap = 8;
        protected static int _sideGap = 2;
		protected static int _hoverInterval = 500;

		// Instance fields
		protected Edge _edge;
		protected int _hoverOver;
		protected int _hoverItem;
		protected int _selectedIndex;
    	protected bool _defaultFont;
		protected bool _defaultColor;
		protected Color _backIDE;
        protected Timer _hoverTimer;
        protected TabPageCollection _tabPages;
		protected WindowContentTabbed _wct;
		protected ArrayList _drawTabs;
        protected VisualStyle _style;

        public delegate void TabStubIndexHandler(TabStub sender, int pageIndex);
        public delegate void TabStubHandler(TabStub sender);

        // Exposed events
        public event TabStubIndexHandler PageClicked;
        public event TabStubIndexHandler PageOver;
        public event TabStubHandler PagesLeave;

		public TabStub(VisualStyle style)
		{
			// Default state
			_wct = null;
			_style = style;
            _hoverOver = -1;
            _hoverItem = -1;
            _selectedIndex = -1;
            _defaultFont = true;
			_defaultColor = true;
			_edge = Edge.None;
			_drawTabs = new ArrayList();
            _tabPages = new TabPageCollection();
            base.Font = SystemInformation.MenuFont;

            // Hookup to collection events
            _tabPages.Cleared += new CollectionClear(OnClearedPages);
            _tabPages.Inserted += new CollectionChange(OnInsertedPage);
            _tabPages.Removing += new CollectionChange(OnRemovingPage);
            _tabPages.Removed += new CollectionChange(OnRemovedPage);

            // Need notification when the MenuFont is changed
            Microsoft.Win32.SystemEvents.UserPreferenceChanged += new 
                UserPreferenceChangedEventHandler(OnPreferenceChanged);

			// Default default colors
			DefineBackColor(SystemColors.Control);

			// Create the Timer for handling hovering over items
			_hoverTimer = new Timer();
			_hoverTimer.Interval = _hoverInterval;
			_hoverTimer.Tick += new EventHandler(OnTimerExpire);
		}

        protected override void Dispose(bool disposing)
        {
            if(disposing)
            {
                // Remove notifications
                Microsoft.Win32.SystemEvents.UserPreferenceChanged -= new 
                    UserPreferenceChangedEventHandler(OnPreferenceChanged);
            }
            base.Dispose(disposing);
        }

        public TabPageCollection TabPages
        {
            get { return _tabPages; }

            set
            {
                _tabPages.Clear();
                _tabPages = value;
            }
        }

		public Edge Edging
		{
			get { return _edge; }

			set
			{
				if (value != _edge)
				{
					_edge = value;
					ResizeControl();
					Recalculate();
					Invalidate();
				}
		    }
		}

		public int SelectedIndex
		{
			get { return _selectedIndex; }

			set
			{
				if (value != _selectedIndex)
				{
					_selectedIndex = value;
					Recalculate();
					Invalidate();
				}
			}
		}

        public override Font Font
        {
            get { return base.Font; }

            set
            {
				if (value != null)
				{
					if (value != base.Font)
					{
						_defaultFont = (value == SystemInformation.MenuFont);

						base.Font = value;
						ResizeControl();
						Recalculate();
						Invalidate();
					}
				}
            }
        }

        public override Color BackColor
        {
            get { return base.BackColor; }

            set
            {
                if (this.BackColor != value)
                {
                    _defaultColor = (value == SystemColors.Control);
					DefineBackColor(value);
                    Invalidate();
                }
            }
        }

        public WindowContentTabbed WindowContentTabbed
        {
            get { return _wct; }
            set { _wct = value; }
        }
        
		public virtual void OnPageClicked(int pageIndex)
		{
            // Has anyone registered for the event?
			if (PageClicked != null)
				PageClicked(this, pageIndex);
		}

		public virtual void OnPageOver(int pageIndex)
		{
            // Has anyone registered for the event?
			if (PageOver != null)
				PageOver(this, pageIndex);
		}

        public virtual void OnPagesLeave()
        {
            // Has anyone registered for the event?
            if (PagesLeave != null)
                PagesLeave(this);
        }
        
        public void PropogateNameValue(PropogateName name, object value)
        {
            switch(name)
            {
                case PropogateName.BackColor:
                    this.BackColor = (Color)value;
                    Invalidate();
                    break;
                case PropogateName.InactiveTextColor:
                    this.ForeColor = (Color)value;
                    Invalidate();
                    break;
                case PropogateName.CaptionFont:
                    this.Font = (Font)value;
                    break;
            }
            
            // Pass onto the contained WCT
            _wct.PropogateNameValue(name, value);
        }
                
        protected void DefineBackColor(Color backColor)
		{
			base.BackColor = backColor;
			
            _backIDE = ColorHelper.TabBackgroundFromBaseColor(backColor);
		}

		protected void OnPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
		{
			// Are we using the default menu or a user defined value?
			if (_defaultFont)
			{
				base.Font = SystemInformation.MenuFont;
				ResizeControl();
				Recalculate();
				Invalidate();
			}
		}

		protected override void OnSystemColorsChanged(EventArgs e)
		{
			// If still using the Default color when we were created
			if (_defaultColor)
			{
				this.BackColor = SystemColors.Control;
				Invalidate();
			}

			base.OnSystemColorsChanged(e);
		}

        protected void OnClearedPages()
        {
            // Cancel any hover selection
            CancelHoverItem();

			// Cancel any current selection
			_selectedIndex = -1;

			ResizeControl();
			Recalculate();
			Invalidate();
		}
		
        protected void OnInsertedPage(int index, object value)
		{
			// If no page is currently selected
			if (_selectedIndex == -1)
			{
				// Then make the inserted page selected
				_selectedIndex = index;
			}

			ResizeControl();
			Recalculate();
			Invalidate();
		}

        protected void OnRemovingPage(int index, object value)
        {
            // Removed page involved in hover calculations?
            if ((_hoverOver == index) || (_hoverItem == index))
                CancelHoverItem();
        
            // Removing the last page?
            if (_tabPages.Count == 1)
            {
                // Get rid of any selection
                _selectedIndex = -1;
            }
            else
            {
                // If removing a page before the selected one...
			    if (index < _selectedIndex)
			    {
                    // ...then the selected index must be decremented to match
					_selectedIndex--;
			    }
			    else
			    {
			        // If the selected page is the last one then...
			        if (_selectedIndex == (_tabPages.Count-1))
			        {
			            // Must reduce selected index
                        _selectedIndex--;
                    }
			    }
	        }
        }

        protected void OnRemovedPage(int index, object value)
        {
			ResizeControl();
			Recalculate();
			Invalidate();
		}

        protected void CancelHoverItem()
        {
            // Currently timing a hover change?
            if (_hoverOver != -1)
            {
                // Prevent timer from expiring
                _hoverTimer.Stop();
                
                // No item being timed
                _hoverOver = -1;
            }

            // Any current hover item?
            if (_hoverItem != -1)
            {
                // No item is being hovered
                _hoverItem = -1;
		        
                // Generate event for end of hover
                OnPagesLeave();
            }
        }

        protected override void OnMouseMove(MouseEventArgs e)
        {
			// Create a point representing current mouse position
			Point mousePos = new Point(e.X, e.Y);

			int index = 0;
			int count = _drawTabs.Count;

			// Search each draw cell
			for(; index<count; index++)
			{
				DrawTab dt = _drawTabs[index] as DrawTab;

				// Is mouse over this cell?
				if (dt.DrawRect.Contains(mousePos))
				{
					// If the mouse is not over the hover item
					if (_hoverItem != dt.Index)
					{
					    // And we are not already timing this change in hover
					    if (_hoverOver != dt.Index)
					    {
					        // Start timing the hover change
						    _hoverTimer.Start();
						    
						    // Remember which item we are timing
						    _hoverOver = dt.Index;
				        }
					}

    				break;
				}
			}

			// Failed to find an item?
			if (index == count)
			{
				// If we have a hover item or timing a hover change
				if ((_hoverOver != -1) || (_hoverItem != -1))
				{
				    // Stop any timing
				    CancelHoverItem();
				}
			}

			base.OnMouseMove(e);
		}

        protected override void OnMouseLeave(EventArgs e)
        {
            // Remove any hover state
            CancelHoverItem();
    
			base.OnMouseLeave(e);
		}

		protected void OnTimerExpire(object sender, EventArgs e)
		{
		    // Prevent the timer from firing again
			_hoverTimer.Stop();

            // A change in hover still valid?
            if (_hoverItem != _hoverOver)
            {
                // This item becomes the current hover item
                _hoverItem = _hoverOver;
                
                // No longer in a timing state
                _hoverOver = -1;

			    // Do we need a change in selection?
			    if (_selectedIndex != _hoverItem)
			    {
				    // Change selection and redraw
				    _selectedIndex = _hoverItem;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美激情一区在线| 精品中文字幕一区二区小辣椒| 亚洲在线成人精品| 久久精品国产一区二区三 | 国产校园另类小说区| 亚洲乱码日产精品bd| 狠狠久久亚洲欧美| 国产亚洲福利社区一区| 天天影视色香欲综合网老头| 成人免费av资源| 久久久一区二区| 久久成人av少妇免费| 91精品欧美久久久久久动漫 | 精品成人佐山爱一区二区| 一区二区三区四区五区视频在线观看| 久久国产精品露脸对白| 欧美日韩国产123区| 亚洲啪啪综合av一区二区三区| 国产精品综合二区| 日韩视频一区二区三区| 日本伊人色综合网| 欧美一级生活片| 免费在线观看一区二区三区| 欧美一区二区免费视频| 日韩va亚洲va欧美va久久| 精品视频1区2区| 亚洲一区二区三区四区不卡| 在线一区二区三区四区五区 | 九一久久久久久| 欧美一区日韩一区| 日韩av在线发布| 日韩视频一区二区三区在线播放| 日韩和欧美一区二区| 这里只有精品电影| 日韩国产欧美在线观看| 9191精品国产综合久久久久久| 欧美激情在线看| 国产精一区二区三区| 制服视频三区第一页精品| 亚洲综合色婷婷| 捆绑调教美女网站视频一区| 日韩一区二区三区电影在线观看| 日本欧美韩国一区三区| 欧美精品九九99久久| 亚洲国产sm捆绑调教视频| 在线视频亚洲一区| 欧美一区二区三区精品| 国模一区二区三区白浆| 精品久久久久久久久久久久久久久久久 | 国产精品激情偷乱一区二区∴| 国产做a爰片久久毛片| 日韩一区二区三区电影在线观看| 日本vs亚洲vs韩国一区三区二区 | 欧美大片在线观看| 美腿丝袜亚洲色图| 久久蜜臀中文字幕| 国产成人自拍在线| 日韩毛片视频在线看| 91国偷自产一区二区开放时间| 亚洲乱码国产乱码精品精可以看 | 国产精品久久久久久久久免费相片| 久久99精品久久久久久久久久久久| 欧美一区二区网站| 国产一区二区三区香蕉| 久久精品亚洲乱码伦伦中文| 成人18精品视频| 亚洲午夜影视影院在线观看| 91精品国产综合久久精品麻豆| 日本麻豆一区二区三区视频| 久久这里只精品最新地址| 国产 欧美在线| 亚洲高清免费视频| 精品99999| 99在线精品免费| 亚洲蜜臀av乱码久久精品蜜桃| 91丝袜美腿高跟国产极品老师 | 日韩一区二区麻豆国产| 国产激情精品久久久第一区二区| 亚洲视频免费在线| 欧美一级精品大片| 懂色av一区二区三区免费观看| 亚洲午夜一区二区| 久久久欧美精品sm网站| 成人免费视频免费观看| 亚洲成人一二三| 国产丝袜美腿一区二区三区| 欧美午夜电影网| 久久99这里只有精品| 综合久久国产九一剧情麻豆| 91精品福利在线一区二区三区| 国产成人免费在线观看| 亚洲成人自拍一区| 国产精品国产精品国产专区不蜜 | 婷婷久久综合九色综合绿巨人| 亚洲精品一区二区三区影院 | 韩国精品免费视频| 亚洲精选在线视频| 欧美精品一区二区三区久久久| 日本乱人伦aⅴ精品| 黑人巨大精品欧美一区| 亚洲一区二区精品视频| 欧美极品xxx| 亚洲精品一区二区三区香蕉| 欧美在线999| 99精品久久99久久久久| 天天综合天天做天天综合| 欧美va亚洲va国产综合| 91精品国产综合久久久久久久| 色域天天综合网| 丁香网亚洲国际| 国产一区二区免费看| 日韩激情一区二区| 成人免费在线视频观看| 久久蜜桃一区二区| 精品国产一区二区三区四区四| 欧美浪妇xxxx高跟鞋交| 在线看日本不卡| 99久久99久久精品国产片果冻| 国产毛片精品一区| 麻豆精品视频在线| 亚洲午夜av在线| 亚洲免费高清视频在线| 国产精品的网站| 国产精品久久毛片av大全日韩| 久久久国产综合精品女国产盗摄| 日韩欧美在线影院| 日韩精品中文字幕一区| 51精品视频一区二区三区| 在线观看91精品国产入口| 91美女在线视频| 99re热视频这里只精品| av亚洲精华国产精华| 91一区一区三区| 国产成人精品1024| 色av成人天堂桃色av| 色网站国产精品| 欧美性色欧美a在线播放| 欧美日韩午夜在线视频| 欧美一区二区三区在线观看视频| 7777精品伊人久久久大香线蕉经典版下载 | 日韩黄色小视频| 日本中文字幕一区二区视频| 亚洲1区2区3区4区| 1区2区3区欧美| 一区二区三区四区高清精品免费观看| 最新国产精品久久精品| 夜夜亚洲天天久久| 日韩成人免费电影| 韩国女主播一区| 成人av免费在线| 欧美日韩一区高清| 精品裸体舞一区二区三区| 国产欧美精品国产国产专区| 国产精品久久久久久福利一牛影视| 亚洲男人的天堂在线观看| 亚洲午夜在线视频| 久久91精品久久久久久秒播| 国产mv日韩mv欧美| 91传媒视频在线播放| 欧美一区二区在线免费播放| 中文字幕不卡三区| 自拍偷拍国产精品| 亚洲国产视频网站| 国产福利91精品一区二区三区| 在线观看www91| 精品国产凹凸成av人网站| 国产精品免费看片| 亚洲妇熟xx妇色黄| 国产91在线看| www.性欧美| 色综合色综合色综合| 欧美一级免费大片| 欧美精品一区二区三区久久久| 亚洲精品免费在线| 国产精品一线二线三线精华| 欧美性xxxxxxxx| 国产精品乱人伦| 狠狠色伊人亚洲综合成人| 在线视频中文字幕一区二区| 久久精品亚洲一区二区三区浴池| 亚洲午夜久久久久久久久电影网| 日本大胆欧美人术艺术动态| 久久99国产精品久久| 欧美日韩国产综合一区二区 | 日韩亚洲欧美一区| 亚洲色欲色欲www在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 91在线视频在线| 久久免费偷拍视频| 日本91福利区| 欧美日韩中文字幕精品| 日本一区二区成人| 国产剧情一区在线| 精品99一区二区三区| 日韩精品免费专区| 99久久精品国产精品久久| 久久精品人人做| 狠狠色狠狠色综合日日91app| 91精品国产综合久久福利| 一区二区三区欧美日|