簡體   English   中英

如何在 Z6145AFC977C7​​660083BDCDDEA91B7D09Z 中的 Msgbox 中顯示唯一“已選中”復選框的文本?

[英]How can I show the text of the only "Checked" checkboxes into a Msgbox in Vb.net?

我正在使用 vb.net,這是我的問題。 假設我有 3 個復選框。

  • 比薩
  • 冰淇淋
  • 薯條

我想要做的是當我點擊“披薩”和“薯條”時,Msgbox 只會顯示“選中”復選框上的文本:

  • 比薩
  • 薯條

並且不包括未選中的一個復選框。 任何幫助將不勝感激

MessageBox.Show(String.Join(", ",
                            Controls.OfType(Of CheckBox)().
                                     Where(Function(cb) cb.Checked).
                                     Select(Function(cb) cb.Text)))

這假定所有CheckBoxes都直接在表單上,​​並且它們是表單上唯一的CheckBoxes 如果它們在某個其他子容器中,您將使用該容器的Controls集合。 如果同一個容器中可能有其他CheckBoxes ,您可以添加一個Panel並將這些CheckBoxes放入其中。 如果您更喜歡使用查詢語法的 LINQ 而不是 function 語法:

MessageBox.Show(String.Join(", ",
                            From cb In Controls.OfType(Of CheckBox)()
                            Where cb.Checked
                            Select cb.Text))
 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        AddHandler chkFiries.CheckedChanged, AddressOf checkedChanged
        AddHandler chkIcecream.CheckedChanged, AddressOf checkedChanged
        AddHandler chkPizza.CheckedChanged, AddressOf checkedChanged
    End Sub
    Private Sub checkedChanged(sender As Object, e As System.EventArgs)
        Dim checkedNames As String
        For Each ctrl As Control In Me.Controls
            If TypeOf ctrl Is CheckBox Then
                Dim chkbox = TryCast(ctrl, CheckBox)
                If chkbox.Checked = True Then
                    checkedNames += chkbox.Text & ","
                End If
            End If
        Next

        MessageBox.Show(checkedNames)
    End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM