1

状況を説明します:

  1. 私のフォームには、リストビュー、テキスト ボックス、およびラベルがあります。

  2. Textbox は、そのディレクトリをリストビューに追加するためのディレクトリ パスを記述します。

  3. テキストボックスのイベント OnTextchanged を使用して、追加する前にリストビューにテキストボックスのテキストが含まれているかどうかを確認します

  4. ここで、テキストボックスからリストビューにディレクトリパスを追加した後、リストビューにテキストを追加した後にテキストボックスのテキストを変更しなかったように、テキストボックスのOnTextChangedイベントは処理されないため、ラベルはまだディレクトリがISであると言っていますリストビュー内ではありません(OnTextchanged イベントが処理されないため)。

次に、この小さな問題を解決するために、テキストを listviewx に追加した後、テキスト ボックスのテキストを更新します。このために作成した小さなスニペットを使用してそれを行いました。

Private Sub Refresh_Textbox_Text(ByVal TextBox As TextBox)
    Dim TempText As String = TextBox.Text
    TextBox.Clear()
    TextBox.Text = TempText
End Sub

しかし、それは初心者の方法だと思います。そのスニペットに見られるようなテキストボックスのテキストが必要な方法でリフレッシュを行うネイティブメソッドが存在するかどうか疑問に思います。「リフレッシュ」としていくつかのメソッドを試しました。無効にする」など...しかし、同じことをするものはありません。

4

3 に答える 3

1

4番目のステップを完全には理解していませんが、次のコードを見てください

Dim ListItems1 As New List(Of String)

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Button1.Enabled = False
    Label1.Text = ""
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    ListItems1.Add(TextBox1.Text)
    ListView1.Items.Add(TextBox1.Text)
    Label1.Text = ""
    TextBox1.Text = ""
    TextBox1.Focus()
End Sub

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
    If TextBox1.Text.Length = 0 Then
        Button1.Enabled = False
    Else
        If ListItems1.Contains(TextBox1.Text) Then
            Label1.Text = "Directory is already in the listview"
            Button1.Enabled = False
        Else
            Label1.Text = "Directory is not in the listview"
            Button1.Enabled = True
        End If
    End If
End Sub

ボタンを存在させたくない場合は、次のことを試してください

Dim ListItems1 As New List(Of String)

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    Label1.Text = ""
End Sub

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
    If TextBox1.Text.Length = 0 Then
        Label1.Text = ""
    Else
        If ListItems1.Contains(TextBox1.Text) Then
            Label1.Text = "Directory is already in the listview"
        Else
            Label1.Text = "Directory is not in the listview"
        End If
    End If
End Sub

Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    If Asc(e.KeyChar) = 13 And ListItems1.Contains(TextBox1.Text) = False And TextBox1.Text.Length > 0 Then
        ListItems1.Add(TextBox1.Text)
        ListView1.Items.Add(TextBox1.Text)
        TextBox1.Text = ""
        Label1.Text = ""
    End If
End Sub
于 2013-06-29T18:09:07.973 に答える
1

Me.Refresh()このように挿入してみてください

Private Sub Refresh_Textbox_Text(ByVal TextBox As TextBox)

   Dim TempText As String = TextBox.Text
    TextBox.Clear()
    TextBox.Text = TempText
    Me.Refresh()
End Sub

お役に立てれば

于 2013-06-29T17:03:06.683 に答える