Multi-Select ComboBox 设置 Selected 属性 True

Posted

技术标签:

【中文标题】Multi-Select ComboBox 设置 Selected 属性 True【英文标题】:Multi-Select ComboBox Set Selected Property True 【发布时间】:2014-01-08 15:31:39 【问题描述】:

我想在Form_Load() 的多选组合框中从Persons_Form!ID 中选择ID

下面的代码执行良好。消息框确实会弹出;p 但是该值始终为 false,并且即使将其设置为 True,也不会在组合框中选中复选框。

我的预期行为是在代码运行后对其进行检查,并在 MsgBox 中返回 True。为了获得预期的行为,我需要进行哪些更改?

Private Sub Form_Load()
    If ID.Value >= 0 Then
        Beep
    Else
        Beep
        With person
            .SetFocus
            For x = Abs(.ColumnHeads) To (.ListCount - 1)
                If (.ItemData(x) Like Forms!Persons_Form!ID.Value) Then
                    .Selected(x) = True
                    MsgBox (.Selected(x))
                End If
            Next
        End With
    End If
End Sub

【问题讨论】:

在“If (.ItemData(x) Like...”行放置一个代码中断,然后将鼠标悬停在“.ItemData(x)”和“Forms!Persons_Form!ID”上.Value”。这将告诉您 Access 认为这两个值是什么。然后按 F8 单步执行代码,并检查每个循环的这些值。您可能会立即看到您做错了什么,或者 Access 没有不喜欢。 访问“喜欢”代码。 IF 语句中的代码确实在正确的时间执行。 x 被分配给正确的索引。 Selected(x) 确实返回复选框的当前状态,并且赋值语句不会导致错误。但是在赋值语句 Selected(x) 之后仍然返回 false。 所以你说它碰到了设置 .Selected(x) = true 的行,它仍然会弹出一个框,上面写着 .Selected(x) = false? 是的,这正是它的作用。 为澄清起见,您的第一行代码引用“ID.Value”,然后您引用“Forms!Persons_Form!ID.Value”。第一个参考在哪里/什么是 - 这个表格或者它应该是另一个表格 - 它是一个文本框还是什么? 【参考方案1】:

抱歉,我还不能对我的低代表发表评论。但是对于 person 对象,.MultiSelect 属性显示了什么?如果它为零,则不能将多个选择设置为 true。

【讨论】:

【参考方案2】:

您必须解决问题。开始简单。工作起来。离开SetFocus,首先!

Private Sub Form_Load()
    person.Selected(1) = True
    MsgBox (person.Selected(1))
End Sub

另外,添加一个布尔变量。使用变量可以清除许多混乱。

Private Sub Form_Load()
    Dim booSelected As Boolean
    person.Selected(1) = True
    booSelected = person.Selected(1)
    MsgBox booSelected
End Sub

【讨论】:

我明天上班的时候试试这个。我很抱歉最近没有关注这个问题。谢谢, 我想知道发生了什么。你有没有让函数按照你想要的方式工作?【参考方案3】:

我想在我的计算机上复制该问题。 一旦我让它失败了,我就可以着手修复它。 我同意韦恩的观点,因为可能有一个

具有 ID 的 Persons_Form

还有一个

拥有 Form_Load 的我(表单),

哪个表格有人物组合框?和 那组组合在哪里填充? 是什么触发了这个 Form_Load? 这些东西从代码片段中并不明显, 你能发布一个可运行的片段吗?

我会使用 Northwind 来填充我的人物组合, 因此无需提供任何私人数据。 然而,很高兴知道 ID 中的模式类型 以及组合框中的 ItemData 类型。

tkx,

3/15 20:40 周六晚上 感谢您提高对该问题的了解。 现在我对表格有疑问,所以 请运行 DatabaseTools / Documenter /

on Tables:   Person  and Report
and set Include-for-fields to the last radio(all items)

and on Forms: "FormA"
and set Include-for-Sections-and-Controls  both Names&Properties

然后你可以把输出表信息 并且只是将“人”控制信息放入一个txt文件 并将其上传到某个地方 喜欢http://www.filedropper.com/free-file-hosting.php 并将生成的 url 放入 stackover next 评论中。

tkx

【讨论】:

场景是有两种形式。 “FormA”包含一个“Multiselect”“Combobox”(称为“person”),它被分配给一个表“Report”列:“Persons”(多值字段)女巫与表“Person”具有多对多关系“ID”列。用户单击加载“FormB”的“FormA”上的按钮。 “FormB” 允许用户在“人员”表中创建新人员。 "FormB" "OnClose" 会刷新 "FormA" 中的数据,然后自动选择 "person" "multiselect combobox" 中与刚刚在 "FormB" 上创建的新 "person" 的 ID 匹配的条目

以上是关于Multi-Select ComboBox 设置 Selected 属性 True的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Single/Multi-Select插件,几乎可以在任何设备上使用

点击事件在Kendo Multi-Select包装器上无法正常工作(仅限FireFox)

如何使用 Material-Ui Autocomplete for Multi-Select 复选框实现 Formik 的 Field 组件?

如何设置 Gtk::ComboBox 的样式

WPF 怎么设置comboBox.text

ttk.ComboBox 样式设置不正确