2010-10-26 2 views
0

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

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

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

+0

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

+0

Нет, это в vb.net –

+0

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

ответ

1

Если вы имеете в виду ASP.Net RadioButtonList-Control попробовать этот пример:

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

EDIT:.. Как вы clairified теперь, когда это проблема с Winform, вам нужен GroupBox, чтобы пользователь мог выбрать только один.

Чтобы создать Radiobuttons динамически из источника данных и добавить их к 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 

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

+0

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

+0

См. Мой обновленный ответ. –

Смежные вопросы