我正在嘗試在 VB .NET 中創建一個程式,該程式應該關聯兩個 numericupdown 按鈕,如果更改 samp 按鈕中的值,也應該控制最大值,反之亦然。我已經為它撰寫了代碼,但不知何故它無法完美運行。請讓我在這里缺少什么。
samp 最小值設定為 50,最大值設定為 400;而最大最小值設定為 0 和最大值 350
Private Sub samp_changed() Handles config_samp.ValueChanged
If config_samp.Value <= 400 And config_samp.Value >= 299 Then
config_max.Value = 150
End If
If config_samp.Value <= 300 And config_samp.Value >= 199 Then
config_max.Value = 250
End If
If config_samp.Value <= 198 And config_samp.Value >= 50 Then
config_max.Value = 350
End If
End Sub
Private Sub max_changed() Handles config_max.ValueChanged
If config_max.Value <= 350 And config_max.Value >= 251 Then
config_samp.Value = 200
End If
If config_max.Value <= 250 And config_max.Value >= 151 Then
config_samp.Value = 300
End If
If config_max.Value <= 150 And config_max.Value >= 101 Then
config_samp.Value = 400
End If
End Sub

uj5u.com熱心網友回復:
當程式執行時samp_changed(), 的 .Valueconfig_max發生了變化,因此它呼叫max_changed(),這可能會改變 的值config_samp,這意味著它samp_changed()被呼叫,并最終被鎖定為一個值。
您需要做的是暫時停止每個方法導致另一個方法被呼叫。您可以通過顯式洗掉處理程式、更改值和添加處理程式來實作。
那些If config_max.Value <= 350 And config_max.Value >= 251 Then,等等,行有點笨拙。使用如下Case陳述句可以更容易地查看正在發生的事情:
Public Class Form1
Private Sub samp_changed(sender As Object, e As EventArgs)
Dim newMaxValue = 0
Dim valueChanged = False
Select Case config_samp.Value
Case 50 To 198
newMaxValue = 350
valueChanged = True
Case 199 To 300
newMaxValue = 250
valueChanged = True
Case 299 To 400
newMaxValue = 150
valueChanged = True
End Select
If valueChanged Then
RemoveHandler config_max.ValueChanged, AddressOf max_changed
config_max.Value = newMaxValue
AddHandler config_max.ValueChanged, AddressOf max_changed
End If
End Sub
Private Sub max_changed(sender As Object, e As EventArgs)
Dim newSampValue = 0
Dim valueChanged = False
Select Case config_max.Value
Case 101 To 150
newSampValue = 400
valueChanged = True
Case 151 To 250
newSampValue = 300
valueChanged = True
Case 251 To 350
newSampValue = 200
valueChanged = True
End Select
If valueChanged Then
RemoveHandler config_samp.ValueChanged, AddressOf samp_changed
config_samp.Value = newSampValue
AddHandler config_samp.ValueChanged, AddressOf samp_changed
End If
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AddHandler config_samp.ValueChanged, AddressOf samp_changed
AddHandler config_max.ValueChanged, AddressOf max_changed
End Sub
End Class
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/361786.html
標籤:网络
