欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#創(chuàng)建浮動工具欄功能示例

 更新時間:2013年12月09日 11:33:12   作者:  
這篇文章主要介紹了c#創(chuàng)建浮動工具欄功能示例,大家參考使用吧

所謂的浮動工具欄,效果圖如下:

也就是說,可以將工具欄拖出其原先的??课恢?,而且可以將拖出來的工具欄再拖放回去。

實現(xiàn)的基本思路如下

1、拖動出來以后,需要創(chuàng)建一個大小合適的窗口,作為工具欄新的??咳萜鳎@個窗口可以這樣設(shè)置:

FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;

ShowIcon = false;

ShowInTaskbar = false;

TopMost = true;

2、浮動工具欄可以擴展自.Net Framework提供的ToolStrip,它被拖動都某個位置,松開鼠標(biāo)左鍵時,會觸發(fā)EndDarg事件,在這個事件中,我們將其從原來的??咳萜髦幸瞥?,同時根據(jù)鼠標(biāo)左鍵松開時,在鼠標(biāo)所在位置上創(chuàng)建一個窗口,作為工具欄的新容器。

這個就是基本的思路了,下面是浮動工具欄FloatToolstrip 具體的實現(xiàn)代碼:

復(fù)制代碼 代碼如下:

代碼

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;

namespace FloatToolStripDemo
{
    public partial class FloatToolstrip : ToolStrip
    {
        private ToolStripPanel tsPanel;

        public FloatToolstrip()
        {
            InitializeComponent();
            this.EndDrag += new EventHandler(MyToolStrip_EndDrag);
            this.SizeChanged += new EventHandler(MyToolStrip_SizeChanged);
        }

        private ToolStripFloatWindow floatForm;
        public ToolStripFloatWindow FloatForm
        {
            get { return floatForm; }
            set
            {
                floatForm = value;
                if (floatForm != null)
                {
                    floatForm.LocationChanged += new EventHandler(floatForm_LocationChanged);
                    floatForm.FormClosing += new FormClosingEventHandler(floatForm_FormClosing);
                }
            }
        }

        void floatForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            e.Cancel = true;
        }

        private void floatForm_LocationChanged(object sender, EventArgs e)
        {
            //當(dāng)floatwindws的位置移動到toolstrippanel中時,將this放置到 toolstripPanel上 
            if (this.floatForm == null)
            {
                return;
            }
            else
            {
                if (floatForm.HasCreated)
                {
                    Point currentPt = new Point(floatForm.Location.X, floatForm.Location.Y);
                    Point minPt = this.tsPanel.PointToScreen(tsPanel.Location);
                    Point maxPt;
                    if (this.tsPanel.Height <= 20)
                    {
                        maxPt = new Point(minPt.X + this.tsPanel.Width, minPt.Y + 20);

                    }
                    else
                    {
                        maxPt = new Point(minPt.X + this.tsPanel.Width, minPt.Y + this.tsPanel.Height);
                    }

                    if ((currentPt.X > minPt.X) && (currentPt.X < maxPt.X) && (currentPt.Y > minPt.Y - 25) && (currentPt.Y < maxPt.Y - 25))
                    {
                        this.floatForm.Controls.Remove(this);
                        this.tsPanel.SuspendLayout();
                        this.tsPanel.Controls.Add(this);
                        this.Location = this.tsPanel.PointToClient(currentPt);
                        this.tsPanel.ResumeLayout();
                        this.floatForm.Dispose();
                        this.floatForm = null;
                    }
                }
            }
        }

        public bool isFloating
        {
            get
            {
                return (floatForm != null);
            }
        }

        public ToolStripPanel ToolStripPanel
        {
            get
            {
                return this.tsPanel;
            }
            set
            {
                this.tsPanel = value;
            }
        }

        private void MyToolStrip_EndDrag(object sender, EventArgs e)
        {
            //判斷移除時
            if (this.tsPanel == null)
            {
                MessageBox.Show("請先設(shè)置ToolStripPanel屬性");
                return;
            }
            Point dockPoint = Cursor.Position;
            int openX, openY;
            openX = dockPoint.X;
            openY = dockPoint.Y;

            Point clientPt = this.tsPanel.Parent.PointToClient(dockPoint);
            if (clientPt.Y > tsPanel.Height)
            {
                ToolStripFloatWindow tsfw = new ToolStripFloatWindow();
                this.tsPanel.Controls.Remove(this);
                tsfw.Controls.Add(this);
                this.Left = 0;
                this.Top = 0;
                this.FloatForm = tsfw;
                Point newLoc = new Point(openX, openY);
                tsfw.Show();
                tsfw.Location = newLoc;
                tsfw.SetBounds(newLoc.X, newLoc.Y, this.ClientSize.Width, this.ClientSize.Height+25);
            }
        }

        private void MyToolStrip_SizeChanged(object sender, EventArgs e)
        {
            if (this.isFloating)
            {
                this.floatForm.Width = this.ClientSize.Width;
            }
        }
    }
}

相關(guān)文章

  • C#默認(rèn)雙緩沖技術(shù)實例分析

    C#默認(rèn)雙緩沖技術(shù)實例分析

    這篇文章主要介紹了C#默認(rèn)雙緩沖技術(shù),實例分析了雙緩沖技術(shù)的設(shè)置與實現(xiàn)技巧,需要的朋友可以參考下
    2015-06-06
  • Unity代碼實現(xiàn)序列幀動畫播放器

    Unity代碼實現(xiàn)序列幀動畫播放器

    這篇文章主要為大家詳細介紹了Unity代碼實現(xiàn)序列幀動畫播放器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • C#中類的異常處理詳解

    C#中類的異常處理詳解

    大家好,本篇文章主要講的是C#中類的異常處理詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • .NET(C#):Emit創(chuàng)建異常處理的方法

    .NET(C#):Emit創(chuàng)建異常處理的方法

    .NET(C#):Emit創(chuàng)建異常處理的方法,需要的朋友可以參考一下
    2013-04-04
  • c#中object、var和dynamic的區(qū)別小結(jié)

    c#中object、var和dynamic的區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于c#中object、var和dynamic的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • C#編程總結(jié)(六)詳解異步編程

    C#編程總結(jié)(六)詳解異步編程

    本篇文章主要介紹了C#異步編程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧。
    2016-12-12
  • c# 用Base64實現(xiàn)文件上傳

    c# 用Base64實現(xiàn)文件上傳

    這篇文章主要介紹了c# 用Base64實現(xiàn)文件上傳的方法,文中講解非常細致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • C#使用委托實現(xiàn)的快速排序算法實例

    C#使用委托實現(xiàn)的快速排序算法實例

    這篇文章主要介紹了C#使用委托實現(xiàn)的快速排序算法,實例分析了C#委托機制與快速排序算法的實現(xiàn)技巧,需要的朋友可以參考下
    2015-07-07
  • C# 中文簡體轉(zhuǎn)繁體實現(xiàn)代碼

    C# 中文簡體轉(zhuǎn)繁體實現(xiàn)代碼

    C# 中文簡體轉(zhuǎn)繁體實現(xiàn)代碼,需要的朋友可以參考一下
    2013-02-02
  • C#實現(xiàn)treeview綁定的方法

    C#實現(xiàn)treeview綁定的方法

    這篇文章主要介紹了C#實現(xiàn)treeview綁定的方法,包括datatable的獲取與節(jié)點的操作,具有一定的參考價值,需要的朋友可以參考下
    2014-12-12

最新評論