王朝网络
分享
 
 
 

DotNET WinForm FAQ 16个(上)

王朝system·作者佚名  2006-01-08
宽屏版  字体: |||超大  

Dotnet WinForm 建立 FAQ

小气的神 2001.08.31

如何建立你的第一个窗体,希望下面的说明可以成为你快速开始的一个指引.

1. 如何设置一个From的边界

2. 如何建立一个透明的From

3. 如何设置窗体在屏幕中的位置

4. 如何使最小化和最大化按钮不可用

5. 如何使一个窗体不见

6. 如何设置使窗体成为非矩形的.

7. 如何使一个窗体在屏幕的最顶端.

8. 如何显示一个Model和非Model的窗体

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

10. 如何将你的窗体不显示在任务条上.

11. 如何制作一个带启动屏幕的窗体.

12. 如何使你的窗体TrayIcon.

13. 如何修改控制窗体的尺寸和长宽尺寸.

14. 如何建立一个Windows Explorer风格的窗体.

15. 如何设置初始的启动窗体

16. 如何建立一个有背景图像的窗体

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有