VB.NET表單操作技巧兩則

來源:互聯網
上載者:User

一、如何拖動沒有邊框的表單?

  這個功能在VB6中,需要藉助於API函數才能實現。而在VB.NET中,憑自己的功能就能實現。首先設定表單的FormBorderStyle屬性為none以去掉表單的邊框,然後在表單上添加一個按鈕。表單中的代碼如下:

Code:
  1. Public Class Form1   
  2.  Inherits System.Windows.Forms.Form   
  3.   
  4.  Private mouse_offset As Point   
  5.  Private Sub form1_MouseDown(ByVal sender As Object, ByVal e As  System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown   
  6.   mouse_offset = New Point(e.X, e.Y)   
  7.  End Sub  
  8.   
  9. Private Sub form1_MouseMove(ByVal Sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove   
  10.  ’按住滑鼠左右鍵均可拖動表單   
  11.  If e.Button = MouseButtons.Left Or e.Button = MouseButtons.Right Then  
  12.   Dim mousePos As Point = Sender.findform().MousePosition   
  13.   ’獲得滑鼠位移量   
  14.   mousePos.Offset(-mouse_offset.X, -mouse_offset.Y)   
  15.   ’設定表單隨滑鼠一起移動   
  16.   Sender.findform().Location = mousePos   
  17.  End If  
  18. End Sub  
  19.   
  20. Private Sub BtnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   
  21.  ’關閉表單   
  22.  Me.Close()   
  23. End Sub  
  24. End Class  

二、多個表單之間互相調用

  在VB6中,多個表單之間可以很方便地互相調用,如:在Form1中,只需要用一條“Form2.Show” 語句就能顯示表單Form2。然而在VB.NET中表單處理機制發生了很大的變化:在訪問表單之前,你必須進行表單執行個體化;如果在項目中有多處代碼訪問同一表單,則你必須把它的同一執行個體指標傳遞給這些代碼,否則新建立的表單執行個體就不再是原先的表單了。

  下面的代碼實現表單Form1和Form2之間互相調用,Form1為主表單。Form1上的按鈕BtnShowFrm2的標題為“顯示Form2”,Form2上的按鈕BtnShowFrm1的標題為“顯示Form1”。

  1、Form1中的代碼:

Code:
  1. Public Class Form1   
  2. Inherits System.Windows.Forms.Form   
  3. ’建立Form2的一個新的執行個體   
  4. Dim Frm2 As New Form2()   
  5.   
  6. Public Function Instance2(ByVal frm As Form2)   
  7. Frm2 = frm   
  8. End Function  
  9.   
  10. Private Sub BtnShowFrm2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnShowFrm2.Click   
  11. ’以下語句保證在Form2以及其他表單中訪問Form1時,   
  12. ’都將得到Form1的同一個表單執行個體。   
  13. Frm2.Instance(Me)   
  14. Frm2.Show()   
  15. Me.Hide()   
  16. End Sub  
  17. End Class  

2、Form2中的代碼:

Code:
  1. Public Class Form2   
  2.  Inherits System.Windows.Forms.Form   
  3.  Dim frm1 As Form1   
  4.  ’藉助一個新增的Instance屬性來產生表單frm1的執行個體   
  5.  Public Function Instance(ByVal frm As Form1)   
  6.   frm1 = frm   
  7.  End Function  
  8.   
  9.  Private Sub BtnShowFrm1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)    Handles BtnShowFrm1.Click   
  10.   Me.Hide()   
  11.   frm1.Show()   
  12.  End Sub  
  13.   
  14.  Private Sub Form2_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles  MyBase.Closed   
  15.   ’如果Form2被關閉,則設定Form1的按鈕BtnShowFrm2不可用。   
  16.   frm1.BtnShowFrm2.Enabled = False  
  17.   frm1.Show()   
  18.  End Sub  
  19. End Class  

以上代碼全部在Windows XP,VB.NET下調試通過。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.