Diskuze: Additional information: Hodnota nemůže být NULL VB.NET
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Petr Šťastný:14.10.2016 21:11
Spadl program, takže 1) to odchytávej podmínkou a když je to null, ukaž textbox se zprávou, nebo
- udělej try - catch block s vypsáním zprávy
Petr Šťastný:14.10.2016 21:13
Pozn. píšu C#, ale ve VB to bude podobné, možná i úplně stejné
if (ToZCehoToNacitas == null) ...
nebo
try{
NactiHodnotu
}catch{
UkazTextBoxSChybou
}
Michal Žůrek - misaz:14.10.2016 22:47
podmínka
If Not objInputBox = Nothing Then
ve VB nefunguje. Místo rovná se dej operátor Is, popř IsNot
If Not objInputBox Is Nothing Then
nebo
If objInputBox IsNot Nothing Then
Michal Žůrek - misaz:14.10.2016 22:49
null (resp. ve VB Nothing) se neošetřuje přes try, protože to už z principu není nikterak extra výjimečný stav a výjimky by se měly používat k ošetřování pouze výjimečných stavů.
Michal Žůrek - misaz:14.10.2016 22:50
platí to stejné jako můj předchozí komentář navíc tvůj kód je matoucí, protože ve VB se s null (Nothing) neporovnává standardně přes rovnítka, ale pomocí operátoru Is.
Neaktivní uživatel:16.10.2016 9:56
Ahoj, nahradil jsem = hodnotou Is, ale nejde, pořád ta samá chyba.
HONZ4:16.10.2016 10:31
Taky dělám pouze C#, ale myslím, že by na začátku v události po
poklepání měl být test jestli ListBox1.SelectedItem není
null
Asi něco jako:
If ListBox1.SelectedItem IsNot Nothing Then 'a teprve pokračovat v kódu'
Neaktivní uživatel:16.10.2016 10:59
Private Sub UpravitÚkolToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UpravitÚkolToolStripMenuItem.Click
'Funkce pro úpravu položek.'
Dim intIndex As Integer = ListBox1.Items.IndexOf(ListBox1.SelectedItem)
Dim objInputBox As Object = InputBox("Upravit úkol :", "Úprava úkolu", ListBox1.SelectedItem)
If Not objInputBox = Nothing Then
ListBox1.Items.Remove(ListBox1.SelectedItem)
ListBox1.Items.Insert(intIndex, objInputBox)
End If
End Sub
Ignorací toho všeho co ti kdo napíše rychlost vyřešení problému neurychlíš.
Private Sub ListBox1_DoubleClick(sender As Object, e As EventArgs) Handles ListBox1.DoubleClick
If ListBox1.SelectedItem IsNot Nothing Then
Dim intIndex As Integer = ListBox1.Items.IndexOf(ListBox1.SelectedItem)
Dim objInputBox As Object = InputBox("Upravit úkol :", "Úprava úkolu", ListBox1.SelectedItem)
If objInputBox IsNot Nothing Then
ListBox1.Items.Remove(ListBox1.SelectedItem)
ListBox1.Items.Insert(intIndex, objInputBox)
End If
End If
End Sub
Správnost InputBox nedokážu bez křišťálové koule posoudit...
+20 Zkušeností
+2,50 Kč
Já jsem v tomto začátečník, vše dělám pouze podle návodu z internetu. Zde je celý kód.
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
'Funkce pro ukládání do paměti při zavření aplikace'
Dim values As String = My.Settings.ListBoxValues
My.Settings.Save()
Dim i As Int16 = 0
Dim test As String
If values <> "" Then
ListBox1.Items.Clear()
ListBox1.Items.AddRange(values.Split("|"))
End If
Try
Do
test = ListBox1.Items(i)
i = i + 1
Loop
Catch
Label2.Text = i.ToString
End Try
'Funkce pro polohu okna v pravém horním rohu a vysouvání.'
Me.Visible = True
Dim x As Integer
Dim y As Integer
x = Screen.PrimaryScreen.WorkingArea.Width
y = Screen.PrimaryScreen.WorkingArea.Height - Me.Height = Top
Do Until x = Screen.PrimaryScreen.WorkingArea.Width - Me.Width
x = x - 1
Me.Location = New Point(x, y)
Loop
End Sub
Private Sub Form1_Click(sender As Object, e As EventArgs) Handles Me.Click
TextBox1.Text = "Zadejte úkol"
End Sub
Private Sub TextBox1_Enter(sender As Object, e As EventArgs)
TextBox1.Text = ""
End Sub
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
Dim values As New List(Of String)
For Each item As String In Me.ListBox1.Items
values.Add(item)
Next
My.Settings.ListBoxValues = String.Join("|", values.ToArray)
My.Settings.Save()
End Sub
Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
TextBox1.Text = "Zadejte úkol"
End Sub
Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click
TextBox1.Text = "Zadejte úkol"
End Sub
Private Sub Label3_Click(sender As Object, e As EventArgs) Handles Label3.Click
TextBox1.Text = "Zadejte úkol"
End Sub
Private Sub Label4_Click(sender As Object, e As EventArgs) Handles Label4.Click
TextBox1.Text = "Zadejte úkol"
End Sub
Private Sub Panel3_Click(sender As Object, e As EventArgs) Handles Panel3.Click
TextBox1.Text = "Zadejte úkol"
End Sub
Private Sub OdebratVybranéToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OdebratVybranéToolStripMenuItem.Click
ListBox1.Items.Remove(ListBox1.SelectedItem)
Label1.Text = "Úkol odebrán ze seznamu"
Dim i As Int16 = 0
Dim test As String
Try
Do
test = ListBox1.Items(i)
i = i + 1
Loop
Catch
Label2.Text = i.ToString
End Try
End Sub
Private Sub OdebratVšeToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OdebratVšeToolStripMenuItem.Click
Odebrat.Show()
End Sub
Private Sub UložitToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UložitToolStripMenuItem.Click
IO.Directory.CreateDirectory("C:\Ukoly")
Dim w As New IO.StreamWriter("C:\Ukoly\seznam.txt")
Dim i As Integer
For i = 0 To ListBox1.Items.Count - 1
w.WriteLine(ListBox1.Items.Item(i))
Next
w.Close()
Label1.Text = "Úkoly byly uloženy"
End Sub
Private Sub PosunoutDolůToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PosunoutDolůToolStripMenuItem.Click
If ListBox1.SelectedIndex < ListBox1.Items.Count - 1 Then
Dim I = ListBox1.SelectedIndex + 2
ListBox1.Items.Insert(I, ListBox1.SelectedItem)
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
ListBox1.SelectedIndex = I - 1
End If
Label1.Text = "Úkol byl přesunut dolů"
End Sub
Private Sub PosunoutNahoruToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles PosunoutNahoruToolStripMenuItem.Click
If ListBox1.SelectedIndex > 0 Then
Dim I = ListBox1.SelectedIndex - 1
ListBox1.Items.Insert(I, ListBox1.SelectedItem)
ListBox1.Items.RemoveAt(ListBox1.SelectedIndex)
ListBox1.SelectedIndex = I
End If
Label1.Text = "Úkol byl přesunut nahoru"
End Sub
Private Sub ZavřítToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ZavřítToolStripMenuItem.Click
Me.Close()
End Sub
Public Sub Button1_Click1(sender As Object, e As EventArgs) Handles Button1.Click
ListBox1.Items.Add(TextBox1.Text.Trim)
Label1.Text = "Úkol byl přidán do seznamu"
Dim i As Int16 = 0
Dim test As String
Try
Do
test = ListBox1.Items(i)
i = i + 1
Loop
Catch
Label2.Text = i.ToString
End Try
Dim sPath As String
Dim mySound As Media.SoundPlayer
sPath = "click.wav"
mySound = New Media.SoundPlayer(sPath)
mySound.Play()
End Sub
Private Sub TextBox1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
KeyAscii = 0
End If
End Sub
Private Sub TextBox1_Click1(sender As Object, e As EventArgs) Handles TextBox1.Click
TextBox1.Clear()
End Sub
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
'Funkce pro odeslání položky při zmáčknutí klávesy "Enter"'
If e.KeyCode = Keys.Enter Then
e.SuppressKeyPress = True
Button1.PerformClick()
End If
End Sub
Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave
If TextBox1.Text = "" Then
TextBox1.Text = "Zadejte úkol"
End If
End Sub
Private Sub ListBox1_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles ListBox1.MouseDoubleClick
'Funkce pro úpravu položek'
Dim intIndex As Integer = ListBox1.Items.IndexOf(ListBox1.SelectedItem)
Dim objInputBox As Object = InputBox("Upravit úkol :", "Úprava úkolu", ListBox1.SelectedItem)
If Not objInputBox Is Nothing Then
ListBox1.Items.Remove(ListBox1.SelectedItem)
ListBox1.Items.Insert(intIndex, objInputBox)
End If
End Sub
Private Sub OtevřítToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OtevřítToolStripMenuItem.Click
'Funkce pro otevírání souboru .txt z uložené pozice.'
Dim r As New IO.StreamReader("C:\Ukoly\seznam.txt")
While (r.Peek() > -1)
ListBox1.Items.Add(r.ReadLine)
End While
r.Close()
Label1.Text = "Úkoly byly nahrány"
End Sub
Private Sub KopírovatToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles KopírovatToolStripMenuItem.Click
If ListBox1.SelectedItems.Count > 0 Then
Clipboard.SetText(ListBox1.SelectedItems(0))
End If
Label1.Text = "Úkol zkopírován do schránky"
End Sub
Private Sub VložitToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles VložitToolStripMenuItem1.Click
TextBox1.Paste()
Label1.Text = "Úkol byl vložen"
End Sub
Private Sub UpravitÚkolToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UpravitÚkolToolStripMenuItem.Click
'Funkce pro úpravu položek.'
Dim intIndex As Integer = ListBox1.Items.IndexOf(ListBox1.SelectedItem)
Dim objInputBox As Object = InputBox("Upravit úkol :", "Úprava úkolu", ListBox1.SelectedItem)
If Not objInputBox = Nothing Then
ListBox1.Items.Remove(ListBox1.SelectedItem)
ListBox1.Items.Insert(intIndex, objInputBox)
End If
End Sub
Private Sub OToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OToolStripMenuItem.Click
informace.Show()
End Sub
Private Sub NastaveníToolStripMenuItem_Click(sender As Object, e As EventArgs)
nastavent.Show()
End Sub
Private Sub HledatToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HledatToolStripMenuItem.Click
hledat.Show()
End Sub
End Class
- na první pohled vidím, že jsi tam ani nedoplnit to, co jsem ti napsal
- nevidím funkci InputBox
- pokud vb neprobíráte ve škole, tak jsi měl raději začít s C# (pro začátečníka vhodnější + na internetu najdeš víc materiálu) (A můj názor na vb: "syntaxe VB je šílená").
Neaktivní uživatel:16.10.2016 11:43
Dik, nevšiml jsem si toho upraveného kódu. Funguje.
Zobrazeno 14 zpráv z 14.