【问题标题】:Combobox in VB.NET Remembers Previous SelectionVB.NET 中的组合框记住以前的选择
【发布时间】:2018-05-06 15:49:30
【问题描述】:

我正在开发一个简单的 VB.Net Windows 表单应用程序,我在其中填写表单,并将结果打印到打印机或保存 ​​PDF。我遇到问题的一个部分是如何在多次打印表单时清除先前的组合框选择。

例如,在表单上,​​用户可以选择 6 个不同的选项: 假期、医疗、公司业务、个人业务、牙科和其他。当我运行我的程序并选择“假期”并预览表格时,选择了“假期”。但是,当我关闭预览窗口并进行另一个选择时,“医疗”和预览表单现在都出现了。如果我在不关闭整个应用程序的情况下重复该过程,则将选择所有项目。有没有办法通过事件或修改我的逻辑来清除以前的选择?谢谢

    Private Sub UltraTextEditor12_SelectionChanged(sender As Object, e As EventArgs) Handles UltraTextEditor12.SelectionChanged
    Dim Counter As Integer = 10
    For a As Integer = 0 To 6
        If Me.UltraTextEditor12.SelectedIndex = a Then
            C1Report1.Fields("Field" & Counter).Text = "XX"
        End If
        Counter += 1
    Next
End Sub

我想知道,我应该在我的 Print 方法中调用这个方法吗?我正在研究那会是什么样子。这是我的打印方法:

    Private Sub Print(Optional ByVal PPreview As Boolean = False)
    ErrorProvider1.Clear()
    ErrorProvider2.Clear()

    If UltraTextEditor3.Text > UltraTextEditor6.Text Then
        ErrorProvider1.SetError(UltraTextEditor3, "From Date Must Be Earlier Than Through Date.")
        ErrorProvider2.SetError(UltraTextEditor6, "Through Date Must Be Later Than From Date.")
        Return
    End If

    Try
        Dim report As C1.Win.C1Report.C1Report = C1Report1

        System.Windows.Forms.Cursor.Current = Cursors.WaitCursor

        Dim pd As PrintDocument
        If My.Application.Info.AssemblyName.Contains("Laser") Then
            pd = C1Report1.Document
        Else
            pd = SetPrinter(OTF_Forms, C1Report1, Me)
        End If

        pd.PrinterSettings.PrinterName = pd.DefaultPageSettings.PrinterSettings.PrinterName
        PushFormValues(report)
        RequestInfo()

        If PPreview Then
            Dim preview As New Previewer
            preview.C1PrintPreview1.Document = pd
            preview.ShowDialog()
        Else
            pd.Print()
        End If

        System.Windows.Forms.Cursor.Current = Cursors.Default

        Me.btnClose.Focus()

        ctrlkey = False
        Me.btnPrint.Text = "Print"
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

Results

【问题讨论】:

  • 你找错地方了。一个 CBO 最多只能有一个选定的项目。第二次显示 2 个片段的事实意味着您在其他地方有一些东西在积累选择
  • 我也添加了我的 Print 方法。不确定我是否需要在那里添加逻辑以确保选择得到更新。正在尝试做更多的研究。

标签: .net vb.net forms winforms combobox


【解决方案1】:

到目前为止,在对我的代码进行了更多尝试之后,我找到了解决方案。我最终实施的是清除先前选择的行。这可能无法深入了解为什么之前的选择被保存的根本问题,但我确实解决了我的问题。我会把不正确的代码注释掉,作为参考:

        Dim Counter As Integer = 10
    'For a As Integer = 0 To 6
    '    If Me.UltraTextEditor12.SelectedIndex = a Then
    '        C1Report1.Fields("Field" & Counter).Text = "XX"
    '    End If
    '    Counter += 1
    'Next
    For a As Integer = 0 To 5
        C1Report1.Fields("Field" & Counter).Text = ""
        If Me.UltraTextEditor12.SelectedIndex = a Then
            C1Report1.Fields("Field" & Counter).Text = "XX"
        End If
        Counter += 1
    Next
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-07
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多