国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

C#窗體設計器開發實例詳解

開發 后端
C#窗體設計器的開發實例這里主要向你介紹實現控件移動的功能,希望對通過介紹使你對了解和學習C#窗體設計器的開發有所幫助。

C#窗體設計器開發實例主要向你介紹控件移動,關鍵點就是需要設計一個獨立于任何控件的類(UIMoveKnob)來控制控件的移動。我這里實現的方法只針對一個控件,如果需要同時選擇多個控件,然后同時移動的話,你需要修改這個類,這里是有點難于控制,我使用的方法嚴重耦合,所以只在這里給出移動一個控件的辦法,具體移動過個控件的方法請各位討論。

C#窗體設計器開發目的:

要移動某個選定的控件,實現控件的:MouseDown;MouseMove;MouseUp這3個事件。

在MouseDown的時候,記錄鼠標點擊的開始位置,并設置開始移動標志為True;

在MouseMove的時候,把控件移動相應的距離(當前鼠標位置 – 鼠標點擊的開始位置);

在MouseUp的時候,釋放移動標志為false。

有了控件移動控制類(UIMoveKnob)以后,我們怎么實現UIMoveKnob和具體控件的關聯呢?同樣,我們需要在Form中增加一個變量private Hashtable _HashUIMoveKnob用于緩存每個控件對應的UIMoveKnob對象。

同時在Form.ControlAdded事件中,通過this._HashUIMoveKnob.Add(e.Control, new UIMoveKnob(e.Control));設置其關聯性。

C#窗體設計器開發之UIMoveKnob的代碼如下:

  1. public class UIMoveKnob   
  2. {   
  3. private System.Windows.Forms.Control _Owner;   
  4. private int _MouseClickAtX;   
  5. private int _MouseClickAtY;   
  6. private bool _BeginDrag;  
  7.  
  8. public UIMoveKnob(System.Windows.Forms.Control Owner)   
  9. {   
  10. this._Owner = Owner;  
  11.  
  12. this._Owner.MouseDown +=   
  13. new System.Windows.Forms.  
  14. MouseEventHandler(this.Owner_MouseDown);   
  15. this._Owner.MouseMove +=   
  16. new System.Windows.Forms.  
  17. MouseEventHandler(this.Owner_MouseMove);   
  18. this._Owner.MouseUp +=   
  19. new System.Windows.Forms.  
  20. MouseEventHandler(this.Owner_MouseUp);   
  21. }  
  22.  
  23. void Owner_MouseDown(  
  24. object sender,   
  25. System.Windows.Forms.MouseEventArgs e)   
  26. {   
  27. this._Owner.Cursor =   
  28. System.Windows.Forms.Cursors.Default;  
  29.  
  30. this._MouseClickAtX = e.X;   
  31. this._MouseClickAtY = e.Y;   
  32. this._BeginDrag = true;   
  33. }  
  34.  
  35. void Owner_MouseMove(  
  36. object sender,   
  37. System.Windows.Forms.MouseEventArgs e)   
  38. {   
  39. try   
  40. {   
  41. if (this._BeginDrag)   
  42. {   
  43. Rectangle rect;  
  44.  
  45. /*   
  46.  * 對于下列控件,是不能拖動的,所以這里也不繪制拖動邊框   
  47.  * TabPage,   
  48.  */   
  49. if (this._Owner is System.Windows.Forms.TabPage)   
  50. {   
  51. //   
  52. }   
  53. else   
  54. {   
  55. this._Owner.Location =   
  56. new Point(this._Owner.Left +   
  57. e.X - this._MouseClickAtX,   
  58. this._Owner.Top + e.Y - this._MouseClickAtY);   
  59. }   
  60. }   
  61. }   
  62. catch { }   
  63. }  
  64.  
  65. void Owner_MouseUp(object sender,   
  66. System.Windows.Forms.MouseEventArgs e)   
  67. {   
  68. this._BeginDrag = false;   
  69. this._Owner.Parent.Refresh();   
  70. }   
  71. }  

修改后的Form代碼前半部分如下:

  1. private MouseHook _MouseHook;   
  2. //我們將所有的已經與具體控件關聯了的UISizeKnob緩存在這個HashTable中   
  3. private Hashtable _HashUISizeKnob;   
  4. //負責控件移動的類   
  5. private Hashtable _HashUIMoveKnob;  
  6.  
  7. public Form1()   
  8. {   
  9. InitializeComponent();  
  10.  
  11. this._MouseHook = new MouseHook(this);  
  12.  
  13. this._HashUISizeKnob = new Hashtable();   
  14. this._HashUIMoveKnob = new Hashtable();  
  15.  
  16. //為了簡潔明了,我們在ControlAdded中來設置具體控件和UISizeKnob的關聯   
  17. this.ControlAdded += new ControlEventHandler(Form1_ControlAdded);   
  18. }  
  19.  
  20. void Form1_ControlAdded(object sender, ControlEventArgs e)   
  21. {   
  22. if (!(e.Control is UISizeDot))   
  23. {   
  24. this._HashUISizeKnob.Add(e.Control, new UISizeKnob(e.Control));   
  25. this._HashUIMoveKnob.Add(e.Control, new UIMoveKnob(e.Control));   
  26.    
  27. //點擊控件的時候,顯示控件的選擇   
  28. e.Control.Click += new EventHandler(Control_Click);   
  29. }   
  30. }  
  31.  
  32. void Control_Click(object sender, EventArgs e)   
  33. {   
  34. //壽險清除已經選擇的控件   
  35. foreach (UISizeKnob knob in this._HashUISizeKnob.Values)   
  36. {   
  37. knob.ShowUISizeDots(false);   
  38. }  
  39.  
  40. try    
  41. {   
  42. ((UISizeKnob)this._HashUISizeKnob[sender]).ShowUISizeDots(true);   
  43. }   
  44. catch { }   
  45. }  

相對來說實現C#窗體設計器開發單個控件的拖動比較簡單,而實現多個控件的拖動,我們需要首先使用一個全局的變量來緩存我們所選擇的控件,然后在此類中。拖動的時候,通過遍歷此全局變量,一個個改變所選擇控件的位置。

C#窗體設計器開發的一個實例的介紹就到這里,希望對你了解和學習C#窗體設計器開發有所幫助。

【編輯推薦】

  1. 詳解C#中不同類的類型
  2. 淺談C#中標準Dispose模式的實現
  3. C#選擇正確的集合進行編碼
  4. C# 4.0新特性:協變與逆變中的編程思想
  5. C#應用Attribute特性 代碼統計分析
責任編輯:仲衡 來源: CSDN博客
相關推薦

2009-08-26 11:07:36

C#打印窗體

2009-09-07 06:31:32

C#窗體移動

2009-09-07 06:48:13

C#透明窗體

2009-09-07 06:07:46

C#窗體設計

2009-08-31 09:41:05

C#反射靜態方法開發

2009-09-07 05:10:52

C#模式窗體

2009-09-03 18:55:08

C#判斷瀏覽器

2009-09-03 19:00:15

C#判斷瀏覽器

2009-09-07 03:44:50

C#窗體間傳值

2009-09-02 17:12:06

C#關機代碼

2009-09-11 12:31:52

C#實例詳解TypeConvert

2009-08-20 11:01:51

C#操作內存

2009-08-18 10:14:19

C#插件構架

2009-09-22 17:53:32

C# COM組件開發

2009-09-07 05:40:16

C#窗體位置C#窗體大小

2009-08-28 12:47:30

C#靜態方法應用

2009-08-18 17:05:08

C#操作xml文件

2009-09-01 11:25:08

C#讀取Word文件

2009-09-07 05:50:59

C# Timer用法

2009-08-26 09:22:44

C#實現打印功能
點贊
收藏

51CTO技術棧公眾號

亚洲午夜免费电影| 正在播放一区二区| 日韩福利一区二区三区| 丁香综合av| 亚洲欧美www| 成人三级网址| 欧美在线制服丝袜| 三级毛片在线免费看| 亚洲视频你懂的| av免费网站观看| thepron国产精品| 日韩视频一二三| 黑人巨大精品欧美黑白配亚洲| 国产高清一区视频| 亚洲色图欧美| 国产精品亚发布| 精品久久综合| 国产精品wwwwww| 欧美影院三区| 国产福利精品视频| 国产欧美日韩在线一区二区 | 91精品国产91久久久久久久久| 欧洲精品在线视频| 在线观看不卡视频| 丁香高清在线观看完整电影视频| 亚洲精品视频在线观看网站| 国产一区二区片| 国产一区二区美女| 日韩精品一区在线视频| 成人午夜视频网站| 日韩中文字幕在线视频观看| 91农村精品一区二区在线| 欧美色图另类小说| 亚洲国产精品99久久久久久久久| 国产三级国产精品国产专区50| 亚洲三级久久久| 久草视频在线看| 日韩精品影音先锋| 亚洲www啪成人一区二区| 久久精品国产91精品亚洲| 97人人澡人人爽91综合色| 欧美激情2020午夜免费观看| 日韩成人av在线资源| 国产欧美精品一区二区三区介绍| 欧美久久九九| 中文字幕在线亚洲三区| 99视频在线精品| 自拍偷拍精选| 色成年激情久久综合| 欧美草逼视频| 日韩网站免费观看| 精品日韩一区| 久久综合九色综合网站| 国产成人日日夜夜| 成人黄色免费| 欧美一级精品大片| 精品一区二区三区四区五区| 国产精品久久久久久久av大片| 一本一道久久综合狠狠老| 日韩av在线电影观看| 91蜜桃网址入口| 毛片网站在线观看| 日韩中文字幕精品| 亚洲午夜精品一区 二区 三区| 一区二区日本伦理| 亚洲色大成网站www久久九九| 麻豆视频在线免费观看| 久久不射电影网| 99视频一区| 中文久久久久久| 91精品国产综合久久久久| 久久av偷拍| 精品欧美国产| 中文字幕第一区第二区| 三级资源在线| 国产精品久久久久福利| 国产剧情一区在线| 国产青青草在线| 欧美情侣性视频| 免费人成黄页网站在线一区二区| 美乳中文字幕| 久久精品男人天堂| 玖玖在线精品| 同心难改在线观看| 久久久免费观看视频| 久久精品国产亚洲a| 暖暖视频在线免费观看| 久久久久久久久久久91| 久久精品国产第一区二区三区| 最新在线地址| 欧美激情一级二级| 国产精品乱人伦| 久久女同精品一区二区| 一级毛片高清视频| 日韩精品在线观看一区二区| 蜜臀91精品国产高清在线观看| 日韩一区二区电影在线观看| 精品中文字幕人| 亚洲深深色噜噜狠狠爱网站| 91精品在线观看视频| 国产福利精品一区二区| 三级视频在线播放| 不卡毛片在线看| 日本91福利区| 一级毛片在线观| 欧美高清第一页| 美日韩一级片在线观看| 在线三级av| 性色av一区二区咪爱| 国产一区二区三区不卡在线观看| 国产日本在线视频| 久热免费在线观看| 天天操天天色综合| 欧美伊人亚洲伊人色综合动图| 成人xxxxx色| 亚洲美女一区二区三区| 国产成人77亚洲精品www| 蜜桃91精品入口| 欧美日韩激情视频| 牛牛精品成人免费视频| 国产又粗又猛又爽又黄的网站| 欧美精品少妇一区二区三区| 伊甸园亚洲一区| 日韩av在线第一页| 国产视频精品一区二区三区| 国产日韩亚洲欧美精品| 日本大臀精品| 国产伊人精品在线| 一区二区三区在线观看视频 | 欧美日韩理论| 原千岁中文字幕| 久久久久国产精品免费| 99精品欧美一区二区三区综合在线| 男女视频在线| 日韩中文字幕av在线| 欧美人妖巨大在线| 美女精品在线| 女子免费在线观看视频www| 欧美日韩喷水| 亚洲成av人乱码色午夜| 日韩高清在线电影| 午夜影院在线观看国产主播| 亚洲电影一二三区| 日韩电影中文字幕一区| 国产精品18久久久久久久网站| www.com.cn成人| 欧美 日韩精品| 青青草一区二区| 天天综合色天天综合色h| 三区四区不卡| 午夜在线播放| 先锋影音男人资源| 久久久999国产| 亚洲欧美乱综合| 极品少妇一区二区三区| 色呦呦在线资源| 加勒比海盗1在线观看免费国语版| 国产一区二区三区视频| 久久久久青草大香线综合精品| 一区二区日韩| 一区二区三区四区在线免费视频| 亚洲一区二区三区777| 日韩一区国产二区欧美三区| 国产老肥熟一区二区三区| 国产精品一区二区三区av| aaaaaaa大片免费看| 亚洲影影院av| 欧美精品一区二区精品网| 国产精品人成电影在线观看| 亚洲免费观看高清完整版在线观看| 亚洲福利天堂| 久青青在线观看视频国产| 国产一区二区免费在线观看| 欧美一区二区三区性视频| 国产一区二区导航在线播放| 一区二区三区日本视频| 一区二区成人网| 91综合免费在线| 精品国产一区二区三区四区四| 国产成人综合视频| 牛牛精品成人免费视频| 99免费精品视频| 91在线三级| 日本一本二本在线观看| 国产成人午夜视频网址| 3d成人h动漫网站入口| 东方欧美亚洲色图在线| 国产精品99久久免费观看| 国模精品一区二区| 91免费国产精品| 国产精品久久久久久久久影视| 91精品婷婷国产综合久久竹菊| 国产精品夜夜嗨| 日韩大尺度在线观看| 九义人在线观看完整免费版电视剧| 欧美午夜一区二区三区免费大片| 亚洲第一精品影视| 91麻豆精品国产91久久久更新资源速度超快| 男人的天堂网av| 国产内射老熟女aaaa|