vba窗体中如何获取列表框listbox1选中行的值返回到文本框textbox1。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vba窗体中如何获取列表框listbox1选中行的值返回到文本框textbox1。相关的知识,希望对你有一定的参考价值。

vba窗体中如何获取列表框listbox1选中行的值返回到文本框textbox1。vba代码怎么写?

参考技术A textbox1.Text=List1.ListIndex + 1
注意,索引号index是从0开始的,因此需要+1得到行号
写在单击或双击事件下面就可以了
参考技术B 在listbox1的SelectedIndexChanged选择事件中写
textbox1.Text = listbox1.Text;
参考技术C

ListBox.SelectedIndexChanged 事件是 .NET 中的,在 VBA 中,使用 ListBox.Click 事件,参考代码如下:

Private Sub ListBox1_Click()
    TextBox1.Text = ListBox1.Text
End Sub

动画效果:

如何在 WPF CheckBox ListBox 中获取选定项目

【中文标题】如何在 WPF CheckBox ListBox 中获取选定项目【英文标题】:How to get Selected items in WPF CheckBox ListBox 【发布时间】:2011-05-01 15:53:45 【问题描述】:

在列表框项目中使用复选框,如何从列表中获取选中的复选框

<ListBox ItemsSource="Binding NameList"  HorizontalAlignment="Left" Margin="16,68,0,12" Name="listBox1" Width="156" IsEnabled="True" SelectionMode="Multiple" Focusable="True" IsHitTestVisible="True" IsTextSearchEnabled="False" FontSize="12" Padding="5" SelectionChanged="listBox1_SelectionChanged">
            <ListBox.ItemTemplate>
                <DataTemplate> 
                        <StackPanel Orientation="Horizontal">                      
                               <CheckBox Content="Binding Path=CNames" />
                        </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

我试图循环遍历列表框项中的选定项目,但它在列表框项中引发异常

 private void btnSelected(object sender, RoutedEventArgs e)
    
        foreach (ListBoxItem item in listBox1.Items)
        
            if (item.ToString() == "true")
            
                MessageBox.Show(item.Content.ToString());
            
        
    

【问题讨论】:

什么是异常,从哪一行抛出异常? 【参考方案1】:

您可以将每个项目的数据上下文从 UI 中移开并创建一个 ObservableCollection 对象

public ObservableCollection<CheckedItem> List  get;set;

public class CheckedItem : INotifyPropertyChanged

  private bool selected;
  private string description;

  public bool Selected 
   
     get  return selected; 
     set 
     
        selected = value;
        OnPropertyChanged("Selected");
     
  

  public string Description 
   
     get  return description; 
     set
     
         description = value;
         OnPropertyChanged("Description");
     
   

  /* INotifyPropertyChanged implementation */

然后在你的 ListBox ItemTemplate 中

<ItemTemplate>
  <DataTemplate>
    <CheckBox IsChecked="Binding Path=Selected" 
              Content=Binding Path=Description" />
  </DataTemplate>
</ItemTemplate>

您选择的项目现在在 ObservableCollection 中可用,而不是在 UI 元素中循环

【讨论】:

这就是我在过去 +1 中实现相同的方式。一个小问题:您可能希望在您的CheckedItem 上实现INotifyPropertyChanged,以防需要双向绑定。 同意 INotifyPropertyChanged。这确实取决于您的要求【参考方案2】:

让你的模板像这样

<ListBox.ItemTemplate>
   <DataTemplate> 
 ........
   <CheckBox Content="" 
      IsChecked="Binding IsSelected, Mode=TwoWay,
      RelativeSource=RelativeSource FindAncestor, 
      AncestorType=x:Type ListViewItem"  />
 ..........
    <!-- Use Other UIElements to Show your Data -->

那么上面的绑定将通过两种方式与您的模型 isSelected 和列表视图选择同步,然后在代码中使用 SelectedItems。

For Each s As myPoco In myListView1.SelectedItems
   ' do something here with
Next

【讨论】:

【参考方案3】:

我会建议这个代码:

 private void save_Click(object sender, RoutedEventArgs e)
 
     foreach (CheckBox item in list1.Items)
     
         if (item.IsChecked)
         
             MessageBox.Show(item.Content.ToString());
         
     
 

【讨论】:

以上是关于vba窗体中如何获取列表框listbox1选中行的值返回到文本框textbox1。的主要内容,如果未能解决你的问题,请参考以下文章

如何使用VBA隐藏多列列表框中的列

VBA Access - 按字母顺序排序列表框

VBA从Excel中的电子表格中的列表框中获取值

Windows 窗体同时滚动多个列表框

c# winform listbox 如何 获取 当前 选中的值 急!!!

Excel VBA - 如何从另一个控件触发列表框单击