NumericUpDown   zodpovězená otázka

VB.NET, WinForms

Neviem si vysvetliť, prečo nižšie uvedený kód nefunguje. Potrebujem zastaviť NumericUpDown až dosiahne určitú hodnotu. Ak klikám na šipku down, tak to funguje. Ale ak ju držím, tak vyhodí chybu: NullReferenceException was unhandled

Public Class Form1
    Dim ptA As New Point(20, 10)
    Dim ptB As New Point(50, 10)
    Dim ptPom As Point
    Dim sirka As Integer = 50

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        NumericUpDown1.Maximum = 50
        NumericUpDown1.Value = 50
    End Sub

    Private Sub NumericUpDown1_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
        ptPom.X = ptB.X
        ptPom.X = ptPom.X + NumericUpDown1.Value - sirka
        If ptPom.X = ptA.X Then
            MsgBox(" Body 'A' a 'B' sa nemôžu prekrývať")
            NumericUpDown1.Value = sirka
        Else
            sirka = NumericUpDown1.Value
            ptB.X = ptPom.X
        End If
    End Sub
End Class

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je třeba nastavit výchozí hodnotu proměnné ptPom

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ďakujem za odpoveď, ale toto nepomáha.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na kterém řádku se to zastaví?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ahoj!

Z End If ide na sirka = NumericUpDown1.Value a tu sa zastaví. Veľmi dobrá otázka.

Ale v podstate je problém zistíť, kde sa program zastaví, Lebo pri jednotlivých kliknutiach to funguje. Ak ale nepretržite držím šipku dole na NumericUpDown1, zobrazí MsgBox a koniec. Záhada!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

A teraz som z toho už totálne blbý. Ak zruším MsgBox, tak to funguje!? Asi to nejak súvisí s prekresľovaním.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vykreslování to dělat nebude. Už ten problém asi vidím - v události ValueChanged měníte po MsgBoxu vlastnost Value, což opět vyvolává událost ValueChanged, tím se pravděpodobně dostanete do nekonečné smyčky. Nevím, jestli je to ono, ale nic jiného mě nenapadá. Každopádně vlastnost Value byste takhle měnit neměl.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ďakujem za odpoveď!

Neviem, čím to bude, lebo nekonečnú slučku tu vlastne vytváram schválne, aby sa pri stlačenom tlačídle NumericUpDown vracal stále na povolenú pozíciu, ale keď použijem, namiesto MsgBox, Label tak to funguje, a preto nateraz túto otázku považujem za zodpovedanú.

Príjemný večer!

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback