來自程序員大本營dotnet版 1. 如何設置一個From的邊界 Form總共有七種不同的邊界風格讓你設置,你可以在設計時刻也可以運行時通過代碼動態的來設置它.這七種邊界風格分別是: None (System.Windows.Forms.FormBorderStyle.None ) Fixed 3D (System.Windows.Forms.FormBorderStyle.Fixed3D) Fixed Dialog (System.Windows.Forms.FormBorderStyle.FixedDialog) Fixed Single(System.Windows.Forms.FormBorderStyle.FixedSingle) Fixed Tool Window(System.Windows.Forms.FormBorderStyle.FixedToolWindow) Sizable(System.Windows.Forms.FormBorderStyle.Sizable) SizableTool Window (System.Windows.Forms.FormBorderStyle.SizableToolWindow) 在設計方式下在VS.NET IDE的 Properties window中設置FormBorderStyle屬性就可以了. 在運行方式下你可以用代碼來完成: DlgBx1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog 這七種邊界類型VB6中就有,沒有什么大的變化,運行方式下你需要對照不同的枚舉變量進行設置. 2. 如何建立一個透明的From 你可以通過兩種方法在設計時刻和運行時刻來做到這一點. 設計時刻,你可以在VS.NET IDE的 Properties window, 設置Opacity 屬性達到這個效果.這個值從0.0到1.0 . 0表示完全透明,1.0表示完全不透明. 運行時刻你可以用下面的編碼設置窗體的Opactiy屬性來做到.具體: frmTransparentForm.Opacity = 0.76; ( C# ) 看得出現在很簡單了,你已經不用再去了解什么Alpha變量了.透明始終只是一種效果,不要濫用它. 3. 如何設置窗體在屏幕中的位置 你可以設置窗體的StartPosition屬性,VS.NET一般給你一個保守的選項” WindowsDefaultLocation“ 這樣系統在Load窗體時將根據用戶當前的計算機設置來確定一個值,你也可以在設計時將它改成另一個值”Center”. 如果你一定要在設計方式下確定窗體在屏幕出現的位置你可以先設置StartPosition為Manual,然后設置Location的X和Y的值. 運行時用代碼實現似乎更簡潔一些: Form1.Location = new Point (100, 100) ( VB.NET ) 當然你也可以分別修改的Location的X和Y值,對應的是窗體的Left和Top屬性,比如: Form1.Left += 200 ( VB.NET ) Form1.Top -= 100 ( VB.NET ) 另外一個屬性將也將影響窗體在屏幕的位置:DesktopLocation 這個屬性主要是在你設置窗體的位置相對于任務欄時非常實用(當你把任務條放在屏幕的頂或左邊時,其實相應改動了desktop coordinates (0,0)),你可以這樣設置這個不出現在設計屬性窗口中的屬性, Form1.DesktopLocation = new Point (100,100) 窗體在屏幕中的位置將主要取決于各自用戶具體的硬件和設置情況,所以保守的作法是用默認的” WindowsDefaultLocation”或 ”Center”;專業的作法是自己先獲取系統的設置然后編碼動態計算后進行設置,不然很容易在屏幕上找不到你的窗體. 4. 如何使最小化和最大化按鈕不可用 在設置窗體的Form.MinimizeBox和Form.MaximizeBox 當為True時表示顯示,False時表示不可.用編程方式見下: frmMaxMin.MinnimizeBox = False ( VB.NET) frmMaxMin.MaxmnimizeBox = True( VB.NET ) 5. 如何使一個窗體不見 我想最直接的辦法是你調用 Hide()方法來做到這一點.不過我想提供另一種方法,看了之后你會獲得一些其它的啟發. ( VB.NET ) Private Const WS_EX_TOOLWINDOW As Int32 = &H80 Private Const WS_POPUP As Int32 = &H80000000 Private Const WS_VISIBLE As Int32 = &H10000000 Private Const WS_SYSMENU As Int32 = &H80000 Private Const WS_MAXIMIZEBOX As Int32 = &H10000 Protected Overrides ReadOnly Property CreateParams() As System.Windows.Forms.CreateParams Get Dim cp As System.Windows.Forms.CreateParams cp = MyBase.CreateParams cp.ExStyle = WS_EX_TOOLWINDOW cp.Style = WS_POPUP Or WS_VISIBLE Or WS_SYSMENU Or WS_MAXIMIZEBOX cp.Height = 0 cp.Width = 0 Return cp End Get End Property 原來是把Height 和Width都設置成0 ,我想這種方式和Hide()調用的底層可能是不同的。 6. 如何設置使窗體成為非矩形的. 這個問題我想我提供的不是最專業的作法,至少它還不能達到我期望的那樣,也就是說它在某些事件中它還會變回矩形.但至少我可以告訴你:如果試圖調用原來的Win32’s API SetWindowRng是不行的,我曾如此的嘗試過.現在你可能需要知道有關窗體的Region屬性 ' // ( VB.NET ) Public Sub SetWindowRegion() Dim FormPath As System.Drawing.Drawing2D.GraphicsPath Dim Reg As Drawing.Region Dim lRet As Long FormPath = New Drawing2D.GraphicsPath() FormPath.AddEllipse(New Rectangle(0, 0, 250, 120)) Me.Region = New Region(FormPath) End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.Region = Nothing SetWindowRegion() End Sub Protected Overrides Sub OnResize(ByVal e As System.EventArgs) Me.Region = Nothing SetWindowRegion() End Sub 7. 如何使一個窗體在屏幕的最頂端. 這是很實用的一個功能,現在你不用在調用其它API了,只用設置TopMost 屬性為True就可以了.對于這個屬性在設計時刻和運行時刻都是可以進行修改的.代碼方式: myTopForm.TopMost = True ( VB.NET) 8. 如何顯示一個Model和非Model的窗體 Model和Modeless的窗體主要將取決于你的應用,最多的是用在顯示對話框.當你需要Model的窗體時你調用MyForm. ShowDialog而非Model的調用MyForm.Show,對于ShowDialog有一個可選參數ower可以讓你為一個窗體建立父子關系.比如: ' Visual Basic Private Sub mnuAbout_Click(…args…) Dim f As New FormOption f.ShowDialog Me End Sub 有一點需要注意的是對于ShowDialog來說,當執行到這一句,窗體顯示,但這之后的代碼將不會執行,只到窗口關閉之后才繼續執行,而對于Show來說是即時的,顯示窗體之后將立即執行下面的代碼. |
溫馨提示:喜歡本站的話,請收藏一下本站!