C#實(shí)現(xiàn)拖拉控件改變位置與大小的方法-創(chuàng)新互聯(lián)

前言:

成都創(chuàng)新互聯(lián)自2013年起,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元多倫做網(wǎng)站,已為上家服務(wù),為多倫各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

很多時(shí)候我們需要在運(yùn)行時(shí),動(dòng)態(tài)地改變控件的位置以及大小,以獲得更好的布局。比如說(shuō)實(shí)際項(xiàng)目中的可自定義的報(bào)表、可自定義的單據(jù)等諸如此類。它們有個(gè)特點(diǎn)就是允許客戶或者二次開發(fā)人員設(shè)計(jì)它們需要的界面設(shè)置功能。

本人以前也做過(guò)可自定義系統(tǒng),包括界面和功能,主要為了減少開發(fā)人員的工作量以及程序的靈活性和健壯性。

本篇主要討論下,在運(yùn)行時(shí)如何實(shí)現(xiàn)拖拉控件,達(dá)到改變控件位置與大小。功能將模擬VS設(shè)計(jì)界面時(shí)的拖拉功能。

(本篇暫不涉及多控件同時(shí)操作)

一、技術(shù)概述

其實(shí)實(shí)現(xiàn)運(yùn)行時(shí)控件的拖拉并不難,主要是改變控件的Location與Size即可。動(dòng)態(tài)調(diào)整時(shí)再捕獲MouseDown、MouseMove及MouseUp事件來(lái)實(shí)時(shí)修改上述兩個(gè)屬性就可以實(shí)現(xiàn)。

二、功能規(guī)劃

在此之前,我們先來(lái)看下.net設(shè)計(jì)界面,一旦選中某個(gè)控件時(shí),將會(huì)出現(xiàn)如下圖的邊框:

C# 實(shí)現(xiàn)拖拉控件改變位置與大小的方法

之后就可以通過(guò)拖拉出現(xiàn)的邊框改變其大小。而改變控件的位置,實(shí)際上是當(dāng)鼠標(biāo)點(diǎn)擊在控件內(nèi)部拖動(dòng)時(shí)實(shí)現(xiàn)的。

所有本例也將功能分為兩個(gè)部分實(shí)現(xiàn),分別為控件內(nèi)部拖動(dòng)改變位置與控件邊框拖拉改變大小。

三、具體實(shí)現(xiàn)

1.拖動(dòng)控件改變位置

首先,新建一個(gè)項(xiàng)目,然后添加一個(gè)類,取名叫MoveControl,該類用來(lái)給控件掛載事件實(shí)現(xiàn)拖動(dòng)。

接著在該類中添加字段currentControl,用來(lái)保存需要操作的控件,即通過(guò)構(gòu)造函數(shù)傳遞的控件。

接著創(chuàng)建一方法--AddEvents,用來(lái)給當(dāng)前的控件掛載事件。

代碼如下: 

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>
  /// 鼠標(biāo)單擊事件:用來(lái)顯示邊框
  /// </summary>
  /// <param name="sender"></param>
  /// <param name="e"></param>
  void MouseClick(object sender, MouseEventArgs e)
  {
  }
  /// <summary>
  /// 鼠標(biāo)按下事件:記錄當(dāng)前鼠標(biāo)相對(duì)窗體的坐標(biāo)
  /// </summary>
  void MouseDown(object sender, MouseEventArgs e)
  {
  }
  /// <summary>
  /// 鼠標(biāo)移動(dòng)事件:讓控件跟著鼠標(biāo)移動(dòng)
  /// </summary>
  void MouseMove(object sender, MouseEventArgs e)
  {
  }
  /// <summary>
  /// 鼠標(biāo)彈起事件:讓自定義的邊框出現(xiàn)
  /// </summary>
  void MouseUp(object sender, MouseEventArgs e)
  {
  }
  #endregion
 }
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

分享題目:C#實(shí)現(xiàn)拖拉控件改變位置與大小的方法-創(chuàng)新互聯(lián)
文章源于:http://bm7419.com/article44/hshhe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站導(dǎo)航App設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

小程序開發(fā)