如果selectedindex改变了,在文本框中显示数据

ifselectedindex changed , show data in a textbox

我已将访问数据库链接到我的表单。 我有 1 table , 2 行 1 = 研究型短文本 2 = 研究详情(长文本)

在我的组合框 1 中,我绑定了我的研究类型行,这样我就可以选择一种研究类型。

现在的问题:如何将详情数据绑定到其下方的richtextbox,以便在选择研究类型后立即显示研究数据?

我试过 if else 连击,试试 catch 连击, 我在想我实际上想多了这里的问题。

“select 从下拉菜单”并在文本框中显示结果的最简单方法是什么。 我是 vb.net 初学者

Public Class Onderzoeken
    Private Sub Onderzoeken_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: This line of code loads data into the 'PatientenDatabaseDataSetX.tbl_OnderzoeksTypes' table. You can move, or remove it, as needed.
        Me.Tbl_OnderzoeksTypesTableAdapter.Fill(Me.PatientenDatabaseDataSetX.tbl_OnderzoeksTypes)
    End Sub

    Private Sub cboxOnderzoek_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboxOnderzoek.SelectedIndexChanged
        If cboxOnderzoek.SelectedItem = Nothing Then

            cboxOnderzoek.Text = ""
        Else
            rtbBeschrijvingOnderzoek.Text = CStr(CType(cboxOnderzoek.SelectedItem, DataRowView)("OZ_Onderzoeksbeschrijving"))

        End If

    End Sub
End Class

我现在添加了该页面的全部代码,代码不多,但如前所述:我将绑定源和显示成员“researchtype”添加到组合框。 因此,当我开始填写表格时,我可以选择一种研究类型。 现在我需要在 richtextbox

中显示研究的描述

Form.Load...

我有一个函数 returns 一个 DataTable 包含名为 NameType 的列。我将 ComboBox 绑定到 DataTable 并将 DisplayMember 设置为 "Name"。 ComboBox 中的每个项目都包含整个 DataRowView。我将 TextBox 设置为第一行 (dt(0)("Type")) Type 列值,以便为初始选择显示正确的信息。

我将更改文本框显示的代码放在 ComboBox1.SelectionChangeCommitted 中,因为其他更改事件将产生 NRE,因为在加载表单时 .SelectedItem 尚未设置。只有在用户做出选择时才会发生提交事件。

首先,将 SelectedItem 转换为其基础类型 DataRowView。然后您需要 Type 列的值。此值分配给文本框的文本 属性。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim dt = LoadCoffeeTable()
    ComboBox1.DataSource = dt
    ComboBox1.DisplayMember = "Name"
    TextBox1.Text = dt(0)("Type").ToString
End Sub

Private Sub ComboBox1_SelectionChangeCommitted(sender As Object, e As EventArgs) Handles ComboBox1.SelectionChangeCommitted
    TextBox1.Text = DirectCast(ComboBox1.SelectedItem, DataRowView)("Type").ToString
End Sub

只需用 Researchtype 代替 Name,用 Researchdetails 代替 Type

使用'OleDbDataAdapter'填充数据集后,您可以为您的ComboBox设置'DisplayMember'和'ValueMember'。每次您的 ComboBox 的索引更改时,它的 'ValueMember' 将显示在 richtextbox 中。

这是您可以参考的代码。

Private dataset As DataSet = New DataSet()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim connString As String = "your connection String"
    Using con As OleDbConnection = New OleDbConnection(connString)
        con.Open()
        Dim cmd As OleDbCommand = New OleDbCommand()
        cmd.Connection = con
        cmd.CommandText = "SELECT Researchtype, Researchdetails FROM yourtable"
        Dim adpt As OleDbDataAdapter = New OleDbDataAdapter(cmd)
        adpt.Fill(dataset)
    End Using
    ComboBox1.DisplayMember = "Researchtype"
    ComboBox1.ValueMember = "Researchdetails"
    ComboBox1.DataSource = dataset.Tables(0)
End Sub

Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
    RichTextBox1.Text = ComboBox1.SelectedValue.ToString()
End Sub

我的测试结果。