【问题标题】:Moving items left and right from two listboxes从两个列表框中左右移动项目
【发布时间】:2020-06-22 06:42:15
【问题描述】:

我有一个带有 2 个列表框的 Gui,如下所示:

这应该是一个安装程序,用户从左侧选择程序将它们移动到右侧并选择安装,然后将安装右侧的所有程序。 我在按钮功能从左到右和从右到左移动时遇到问题。当我这样做时:

Function MoveRight (){
       $x = $listbox1.selecteditems
       @($x) | ForEach-Object {[void] $Listbox2.Items.Add($_)}}

我将项目放在右侧,但是当用户再次按下该按钮时,我看到那里有重复。 我正在苦苦思索如何让它测试左侧的选定项目是否已经存在于右侧,如果是,请忽略它。

我无法检查 listbox1.selecteditem 是否等于 listbox2.selecteditem,因为用户不应该检查 listbox2 中的项目(除非他想删除它们)。

知道我该怎么做吗?

【问题讨论】:

    标签: powershell user-interface listbox


    【解决方案1】:

    在右侧列表框添加元素之前使用 .Items.Clear() 方法:

    Function MoveRight (){
           $listbox2.Items.Clear()
           $x = $listbox1.selecteditems
           @($x) | ForEach-Object {[void] $Listbox2.Items.Add($_)}}
    

    【讨论】:

    • 这是一个不错的方法,但如果用户忘记在左边添加一个程序,这将无济于事,以防他在右边有 10 个程序,现在他只检查左边的另一个程序,它会从右侧删除所有项目
    • 这会将项目向右移动,同时从左侧移除:Function MoveRight (){ $x = $listbox1.selecteditems @($x) | ForEach-Object {[void] $Listbox2.Items.Add($_); [void] $Listbox1.Items.Remove($_)} }
    猜你喜欢
    • 2015-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2013-12-24
    相关资源
    最近更新 更多