Dotnet WinForm 建立 FAQ (1)

来源:互联网 发布:数据解决方案 编辑:程序博客网 时间:2024/05/01 00:50
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)

Sizable  Tool 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来说是即时的,显示窗
体之后将立即执行下面的代码.

9.     如何制作一个MDI的窗体

1.     建立一个新的Windows Application项目

2.     分别加入两个窗体Form1 、Form2

3.     设置Form1的IsMdiContainer属性为True。使它成为MDI主窗体。

4.     在Form2中加入一个RichTextBox控件,并设置Dock为:Fill

5.     在Tools 窗体中拖一个MainMenu到窗体Form1,然后建立一个菜单
File|Windows|Help三个菜单项,File中包括New、Exit菜单项;Windows中包括
Cascade、Horizontal等。

6.     设置Windows菜单项的MdiList属性=True, 这样每一个MDI子窗口将自动
加在Windows菜单项下面。

7.     双击New菜单项,然后加入以下代码:

     private void menuNew_Click(object sender, System.EventArgs e)

     {

         Form2  NewMdiChild ;

         NewMdiChild = new Form2() ;

         NewMdiChild.MdiParent = this ;

         NewMdiChild.Show() ;



     }

8.     在Windows的Cascade等菜单项中加入以下代码:

     private void menuWindowCasca_Click(object sender, System.
EventArgs e)

     {

         this.LayoutMdi( MdiLayout.Cascade) ;



     }

另外还有以下常用的:

this.LayoutMdi(MdiLayout.TileHorizontal);

this.LayoutMdi(MdiLayout.TileVertical);

9.     F5运行。

最终版的VS.NET 不知是否会有一个通用的模板,不过用完全手工的方式产生一个
MDI的窗口,显得有些繁琐,不如VS.NET的IDE方式下那么简洁。
原创粉丝点击