MaximumSize、MinimumSize、MaximizeBox、MinimizeBox实例解析

本文探讨了在程序运行中,Form1窗口的大小调整限制。尽管直接通过鼠标缩小窗口的功能被禁用,但最小化按钮仍能正常工作,将窗口缩至任务栏。这一现象揭示了窗口管理与用户交互设计之间的微妙平衡。

本文部分内容来自书籍和官网。

程序运行之后,使用鼠标对拖动Form1的边框进行缩小操作可以发现该窗口无法再缩小了。

但是这时候,单击“最小化”button仍然可以对Form1最小化到任务栏。

' PDFViewer.WinForms/Forms/GoToPageDialog.vb Imports System.Windows.Forms Imports System.Drawing Public Class GoToPageDialog Inherits Form Private _btnGoTo As Button Private _btnCancel As Button Private _txtPageNumber As TextBox Private _lblPageNumber As Label Private _lblTotalPages As Label Private _selectedPage As Integer = 1 Private _maxPage As Integer = 1 Public Sub New() InitializeComponents() End Sub Private Sub InitializeComponents() ' Form properties Text = "Go To Page" FormBorderStyle = FormBorderStyle.FixedDialog MaximizeBox = False MinimizeBox = False StartPosition = FormStartPosition.CenterParent ClientSize = New Size(300, 120) ' Page number label _lblPageNumber = New Label() With { .Text = "Page number:", .Location = New Point(10, 20), .Size = New Size(80, 20) } ' Page number text box _txtPageNumber = New NumericUpDown() With { .Location = New Point(100, 17), .Size = New Size(80, 20), .Minimum = 1, .Maximum = 10000, .Value = 1, .TextAlign = HorizontalAlignment.Right } ' Total pages label _lblTotalPages = New Label() With { .Text = "of 1", .Location = New Point(185, 20), .Size = New Size(50, 20) } ' Go To button _btnGoTo = New Button() With { .Text = "Go To", .Location = New Point(120, 60), .Size = New Size(80, 25), .DialogResult = DialogResult.OK } ' Cancel button _btnCancel = New Button() With { .Text = "Cancel", .Location = New Point(210, 60), .Size = New Size(80, 25), .DialogResult = DialogResult.Cancel } ' Add controls Controls.AddRange({ _lblPageNumber, _txtPageNumber, _lblTotalPages, _btnGoTo, _btnCancel }) ' Set accept and cancel buttons AcceptButton = _btnGoTo CancelButton = _btnCancel ' Event handlers AddHandler _txtPageNumber.KeyDown, AddressOf TxtPageNumber_KeyDown End Sub Private Sub TxtPageNumber_KeyDown(sender As Object, e As KeyDownEventArgs) If e.KeyCode = Keys.Enter Then DialogResult = DialogResult.OK Close() End If End Sub Public Property SelectedPage As Integer Get Return CInt(_txtPageNumber.Value) End Get Set(value As Integer) _selectedPage = Math.Max(1, Math.Min(_maxPage, value)) _txtPageNumber.Value = _selectedPage End Set End Property Public Property MaxPage As Integer Get Return _maxPage End Get Set(value As Integer) _maxPage = Math.Max(1, value) DirectCast(_txtPageNumber, NumericUpDown).Maximum = _maxPage _lblTotalPages.Text = $"of {_maxPage}" End Set End Property Public Property CurrentPage As Integer Get Return _selectedPage End Get Set(value As Integer) _selectedPage = value _txtPageNumber.Value = value End Set End Property Protected Overrides Sub OnShown(e As EventArgs) MyBase.OnShown(e) _txtPageNumber.Select() _txtPageNumber.Select(0, _txtPageNumber.Text.Length) End Sub End Class
最新发布
12-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值