【问题标题】:How do I set the selected item in an MSI combo box that has been filled from a custom action?如何在已通过自定义操作填充的 MSI 组合框中设置所选项目?
【发布时间】:2010-09-14 19:23:50
【问题描述】:

我正在使用 WiX 创建一个网站 MSI。我有一个自定义操作(用 C# 编写)填充一个组合框,其中包含 IIS 中网站的描述,以便用户可以选择要安装到的现有网站。

工作正常 - 除了第一次显示对话框页面时没有选择任何项目。我希望默认选择列表中的第一个站点。

知道我该怎么做吗? (对我而言)“显而易见”的事情似乎都不起作用。

我使用的是最新版本的 WiX。

【问题讨论】:

    标签: combobox wix windows-installer custom-action


    【解决方案1】:

    每一行都有一个值,控件有一个属性。该属性将具有所选行的值。该语言中没有 control.value 或 control.selecteditem.value 的概念。

    【讨论】:

    • 在 WiX 组合框本身中 - 不,但这可以通过将相应的属性设置为所需的值来完成,无论是从 WiX 标记还是自定义操作的代码
    • 对不起,当我说“该属性将具有所选行的值”时,这是暗示的。与此相反的是,所选行将是具有属性值的行。
    • 哦,好吧,现在明确说明)
    • 对不起。我的建议似乎与 MSI SDK 本身一样神秘。 :(
    【解决方案2】:

    实际上可以为组合框预选精确值 - 只需在自定义操作的代码中将连接到组合框的属性设置为所需值,它就会在 UI 中被预选。

    例如,如果你有一个组合框

     <Control Id="WebSiteCombobox" Type="ComboBox" Property="IIS_WEBSITE_ID" Width="320" Height="16" X="20" Y="80" ComboList="yes" Sorted="yes"/>
    

    然后,在您自定义操作的 c# 代码中:

    foreach (Site site in iisSites)
    {
        //code to fill the combobox
    }
    
    session["IIS_WEBSITE_ID"] = iisSites.First().Id.ToString(); //Or to any other value you want to be preselected
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多