經常進行圖形介面設計的程式設計者肯定知道,控制項在設計的時候才能隨意拖動,執行的時候就不能拖動了.
你肯定會問:執行時能隨意拖動控制項嗎?答案是肯定的,我們的專案涉及到了這一點,我已經實現了,實際上很簡單的喲.我就拿出來給你們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 進行控制。...