Проверить список переключателей в стиле окна списка

#vb.net #winforms

#vb.net #winforms

Вопрос:

Возможно ли создать список переключателей, как у нас есть checked List box? На самом деле я хочу загрузить все параметры из базы данных в список, но не хочу, чтобы пользователь разрешал проверять более одного элемента.

Также, как это прочитать (скажем, пункт 4 списка) Я хочу сохранить его значение в переменной.

Спасибо и с наилучшими пожеланиями. Furqan

Комментарии:

1. Является ли это ASP.Net Веб-приложение?

2. VB.Net это только язык, а не технология (например, ASP. Net или Windows Forms). Хорошо, тогда посмотрите мой обновленный ответ.

Ответ №1:

Если вы имеете в виду ASP.Net RadioButtonList-Элемент управления попробуйте этот пример:

aspx (вы можете настроить источник данных в конструкторе (показать смарт-тег):

 <asp:RadioButtonList ID="RadioButtonList1" runat="server" DataSourceID="SqlDataSource1"
     DataTextField="ClaimStatusName" DataValueField="idClaimStatus">
</asp:RadioButtonList>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:RM2ConnectionString %>"
            SelectCommand="SELECT [idClaimStatus], [ClaimStatusName] FROM [dimClaimStatus]">
</asp:SqlDataSource>
  

Список Radiobuttonlist позволяет пользователю по умолчанию выбирать только один элемент.
Выбранный элемент сохраняется в RadioButtonList1.SelectedItem .

РЕДАКТИРОВАТЬ: Поскольку теперь вы ясно указали, что это проблема с Winform, вам нужен GroupBox, позволяющий пользователю выбирать только один.

Чтобы динамически создавать радиокнопки из источника данных и добавлять их в Groupbox, взгляните на мой samplecode:

     Private Sub Form_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim allStatus As DataSet2.StatusDataTable = New DataSet2TableAdapters.StatusTableAdapter().GetData()
        For i As Int32 = 0 To allStatus.Rows.Count - 1
            Dim status As DataSet2.StatusRow = allStatus(i)
            Dim rb As New RadioButton()
            rb.Text = status.ClaimStatusName
            rb.Tag = status.idClaimStatus
            rb.Location = New Point(Me.GroupBox1.Location.X   5, Me.GroupBox1.Location.Y   i * rb.Height)
            AddHandler rb.CheckedChanged, AddressOf RBCheckedChanged
            Me.GroupBox1.Controls.Add(rb)
        Next
        Me.GroupBox1.Visible = allStatus.Rows.Count > 0
        If allStatus.Rows.Count > 0 Then
            Dim width, height As Int32
            Dim lastRB As Control = Me.GroupBox1.Controls(GroupBox1.Controls.Count - 1)
            width = lastRB.Width   20
            height = lastRB.Height
            Me.GroupBox1.Size = New Size(width, allStatus.Rows.Count * height   20)
        End If
    End Sub

    Private Sub RBCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
        Dim source As RadioButton = DirectCast(sender, RadioButton)
        Dim checkedRB As RadioButton = getCheckedRadioButton(Me.GroupBox1)
        'source and checkedRB are the same objetcs because we are in CheckedChanged-Event'
        'but getCheckedRadioButton-function works from everywhere'
    End Sub

    Private Function getCheckedRadioButton(ByVal group As GroupBox) As RadioButton
        For Each ctrl As Control In group.Controls
            If TypeOf ctrl Is RadioButton Then
                If DirectCast(ctrl, RadioButton).Checked Then Return DirectCast(ctrl, RadioButton)
            End If
        Next
        Return Nothing
    End Function
  

Помните, что вы должны заменить мои объекты данных своими.

Комментарии:

1. Извините, мне это не нужно в asp. Мне это нужно в winforms