前言:
成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元多倫做網(wǎng)站,已為上家服務,為多倫各地企業(yè)和個人服務,聯(lián)系電話:18980820575很多時候我們需要在運行時,動態(tài)地改變控件的位置以及大小,以獲得更好的布局。比如說實際項目中的可自定義的報表、可自定義的單據(jù)等諸如此類。它們有個特點就是允許客戶或者二次開發(fā)人員設計它們需要的界面設置功能。
本人以前也做過可自定義系統(tǒng),包括界面和功能,主要為了減少開發(fā)人員的工作量以及程序的靈活性和健壯性。
本篇主要討論下,在運行時如何實現(xiàn)拖拉控件,達到改變控件位置與大小。功能將模擬VS設計界面時的拖拉功能。
(本篇暫不涉及多控件同時操作)
一、技術概述
其實實現(xiàn)運行時控件的拖拉并不難,主要是改變控件的Location與Size即可。動態(tài)調整時再捕獲MouseDown、MouseMove及MouseUp事件來實時修改上述兩個屬性就可以實現(xiàn)。
二、功能規(guī)劃
在此之前,我們先來看下.net設計界面,一旦選中某個控件時,將會出現(xiàn)如下圖的邊框:
之后就可以通過拖拉出現(xiàn)的邊框改變其大小。而改變控件的位置,實際上是當鼠標點擊在控件內部拖動時實現(xiàn)的。
所有本例也將功能分為兩個部分實現(xiàn),分別為控件內部拖動改變位置與控件邊框拖拉改變大小。
三、具體實現(xiàn)
1.拖動控件改變位置
首先,新建一個項目,然后添加一個類,取名叫MoveControl,該類用來給控件掛載事件實現(xiàn)拖動。
接著在該類中添加字段currentControl,用來保存需要操作的控件,即通過構造函數(shù)傳遞的控件。
接著創(chuàng)建一方法--AddEvents,用來給當前的控件掛載事件。
代碼如下:
DragControl
using System; using System.Collections.Generic; using System.Text; using System.Windows.Forms; using System.Drawing; namespace DragControl { public class MoveControl { #region Constructors public MoveControl(Control ctrl) { currentControl = ctrl; AddEvents(); } #endregion #region Fields private Control currentControl; //傳入的控件 #endregion #region Properties #endregion #region Methods /// <summary> /// 掛載事件 /// </summary> private void AddEvents() { currentControl.MouseClick += new MouseEventHandler(MouseClick); currentControl.MouseDown += new MouseEventHandler(MouseDown); currentControl.MouseMove += new MouseEventHandler(MouseMove); currentControl.MouseUp += new MouseEventHandler(MouseUp); } #endregion #region Events /// <summary> /// 鼠標單擊事件:用來顯示邊框 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void MouseClick(object sender, MouseEventArgs e) { } /// <summary> /// 鼠標按下事件:記錄當前鼠標相對窗體的坐標 /// </summary> void MouseDown(object sender, MouseEventArgs e) { } /// <summary> /// 鼠標移動事件:讓控件跟著鼠標移動 /// </summary> void MouseMove(object sender, MouseEventArgs e) { } /// <summary> /// 鼠標彈起事件:讓自定義的邊框出現(xiàn) /// </summary> void MouseUp(object sender, MouseEventArgs e) { } #endregion } }
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
分享題目:C#實現(xiàn)拖拉控件改變位置與大小的方法-創(chuàng)新互聯(lián)
文章源于:http://muchs.cn/article44/hshhe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站導航、App設計、網(wǎng)站設計、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內容