0

私はこれらすべてに非常に慣れておらず、検索を試みましたが、私が求めているものを達成するのに役立つものは何も見つかりません.

私はVBに次のフォームを持っています:

タブコントロール x 1 タブコントロールのさまざまなタブに配置されるチェックボックス x 10 リストボックス x 1

チェックボックスのいずれかをオンにすると、そのテキストがリストボックスに追加され、オフにすると、テキストがリストボックスから取得されます。

これは、チェックボックスごとに changedcheck イベントの if ステートメントを使用して非常に簡単に実現できますが、すべてのチェックボックスに対してこれを行う必要があります。さらに、後の段階で追加する場合は、そのコードを追加することを忘れないでください。

理想的には、次のようなメソッドが必要です: 値が true の場合はタブコントロールのすべてのチェックボックスをチェックし、値が false の場合は文字列にテキストを書き込み、文字列からテキストを取得します。文字列をリストボックスに入れます。

私はこのようなものから始めました...

Dim chk As CheckBox
Dim txt As String = ""
For Each chk In TabControl1.Controls
    If chk.Checked = True Then
      txt = txt + chk.Text +vbCrLF
    Else
      txt = replace(txt, chk.text + vbCrLf, "")
    End If
Next
      End Sub

最初の問題は、上記が明らかに機能しないことです! そのため、ガイダンスをいただければ幸いです-他のコードからスクラップを読んでまとめました。

2 番目の問題は、以前は各コントロールに CheckedChanged イベントを使用していたため、リスト ボックスがどのように更新されるかを理解できないことです。チェックボックスのいずれかである可能性があります(うまくいけば、それは理にかなっています!)。チェックしたチェックボックスをリストボックスに追加するためにボタンを押す必要はなく、動的にしたい

どんな助けでも大歓迎です。

4

1 に答える 1

0

あなたの最初の問題のために追加

Dim chk As Control
Dim txt As String = ""
For Each chk In TabControl1.Controls
If TypeOf chk Is CheckBox 
  If DirectCast(chk, CheckBox).Checked = True Then
    txt = txt + chk.Text +vbCrLF
  Else
    txt = replace(txt, chk.text + vbCrLf, "")
  End If
End If 
Next
  End Sub

CheckedChanged イベントの 2 番目の問題については、次のようなことができます。

Private Sub OnCheckedChanged(sender as Object, e as EventArgs) _ 
 Handles CheckBox1.CheckedChanged

  Dim chk As CheckBox = TryCast(s, CheckBox) 
   Dim txt as string
   If c.Checked = True Then
   txt = chk.Text
  EndIf

End Sub
于 2012-07-21T09:17:44.553 に答える