c 可以建立任意控制項的拖動方法

2022-09-26 03:33:08 字數 2425 閱讀 9364

經常進行圖形介面設計的程式設計者肯定知道,控制項在設計的時候才能隨意拖動,執行的時候就不能拖動了.

你肯定會問:執行時能隨意拖動控制項嗎?答案是肯定的,我們的專案涉及到了這一點,我已經實現了,實際上很簡單的喲.我就拿出來給你們show一下,哈哈,各位高手不要笑我喲。

我們先從簡單的入手,一步一步的來吧:

首先,新建乙個form1,拖進去乙個label1,text為:滑鼠拖動控制項練習.接下來就是為它註冊事件了,這裡我們註冊的是label1_m程式設計客棧ouseup,label1_mousedown兩個事件.在實現註冊事www.cppcns.com件的**前要先定義乙個point物件(全域性),

private point mouse_offset;

用來記錄滑鼠位置,以便平移滑鼠位置。

下面是label1_mousedown的**:

private void label1_mousedown(object sender, mouseeventargs e)

是不是非常easy喲.

下面是label1_mouseup的**:

private void label1_mouseup(object sender, mouseeventargs e)

}這個比較複雜,有必要介紹下,

point mousepos = control.mouseposition;定義乙個 point,它包含滑鼠游標相對於螢幕左上角的座標。此時記錄的是當前滑鼠的位置,也就是最後byncbfdwpc放控制項的位置.

mousepos.offset(mouse_offset.x, mouse_offset.y);

是乙個方法,

point.offset(int32,int32)

將此 point 平移指定的量。

((control)sender).location = ((control)sender).parent.pointtoclient(mousepos);

這個裡面的sender大家應該很清楚吧,就是觸發事件的label1嘍,((control)sender).location 這句話就是指定label1的位置,((control)sender).parent當然就代表當前的form1了,如果form1巢狀在另外乙個form1裡面,那麼後面可以在有乙個.parent,即:((control)sender).parent.parent,.......依次類推嘍.......

control.pointtoclient 方法,將指定螢幕點的位置計算成工作區座標。引數是:

要轉換的螢幕座標 point。

事實工作已經完成了,很簡單吧,覺得汗吧......c#建立可以隨意拖動的控制項

下次介紹執行時怎樣動態新增控制項.c#建立可以隨意拖動的控制項

下面把**附上:

form1.desgener////////**

namespace 窗體拖動1

basebyncbfdwpc.dispose(disposing);

}#region windows 窗體設計器生成的**

///

/// 設計器支援所需的方法 - 不要

/// 使用**編輯器修改此方法的內容。

///

private void initializecomponent()

{this.label1 = new system.windows.forms.label();

this.suspendlayout();

//// label1

//this.label1.autosize = true;

this.label1.location = new system.drawing.point(92, 86);

this.label1.name = "label1";

this.label1.size = new system.drawing.size(101, 12);

this.label1.tabindex = 0;

this.label1.text = "滑鼠拖動控制項練習";

this.label1.mousedown += new system.windows.forms.mouseeventhandler(this.label1_mousedown);

this.label1.mouseup += new system.windows.forms.mouseeventhandler(this.label1_mouseup);

//// form1

//this.autoscaledimensions = new system.drawing.sizef(6f, 12f);

this.autoscalemode = system.windows.forms.autoscalemode.font;

this.clientsize = new system.drawing.size(292, 266);

本文標題: c#可以建立任意控制項的拖動方法

本文位址:

C 建立可以隨意拖動的控制項

經常進行圖形介面設計的程式設計者肯定知道,控制項在設計的時候才能隨意拖動,執行的時候就不能拖動了.你肯定會問 執行時能隨意拖動控制項嗎?答案是肯定的,我們的專案涉及到了這一點,我已經實現了,實際上很簡單的喲.我就拿出來給你們show一下,哈哈,各位高手不要笑我喲.我們先從簡單的入手,一步一步的來吧 ...

Flash AS簡單製作可以任意拖動的四邊形

用flash actionscript簡單製作可以任意拖動的四邊形,是製作遊戲的乙個基礎程式。開啟flash,首先將屬性改為30fps然後新建立乙個組建laser,設定效果如下。img files beyondpic 2007 7 18 2007071616415433.gif img 然後回到主場...

C 中動態訂閱控制項中任意事件的方法

這個題目想了半天,不太好用一句話描述。這樣,舉個簡單的應用場景 在用windows forms製作嚮導程式的時候,通常會有 上一步 下一步 這樣的按鈕。假設現在需要做乙個通用的 嚮導製作框架 那麼我們就需要在這個 嚮導製作框架 中,對 上一步 下一步 這些按鈕是否可用 是否enabled 進行控制。...