質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ウィンドウ

コンピューター用語において、ウィンドウとはユーザとプログラムのやり取りを可能にするGUIの枠組みのことをいいます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

1252閲覧

WPFのListViewの一つの項目をコードから選択するには?

Punio

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ウィンドウ

コンピューター用語において、ウィンドウとはユーザとプログラムのやり取りを可能にするGUIの枠組みのことをいいます。

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2020/07/04 09:11

前提条件・実現したいこと

C#を使い、ウィンドウアプリケーションを作っています。
その中でListViewを使っていて、コード側からListViewの一つの項目を選択するにはどうすれば良いでしょうか?
(ボタンを押したらある項目を選択するなど)

C#

1//一部省略しています。 2 <ListView HorizontalAlignment="Left" Height="390" Margin="178,29,0,0" VerticalAlignment="Top" Width="614" RenderTransformOrigin="-0.07,0.455" ItemsSource="{Binding}" x:Name="lv" SelectionMode="Single"> 3 <ListView.View> 4 <GridView> 5 <GridViewColumn Header="hoge" DisplayMemberBinding="{Binding Path=[0]}" Width="550"/> 6 <GridViewColumn Header="fuga" DisplayMemberBinding="{Binding Path=[1]}" Width="50"/> 7 </GridView> 8 </ListView.View> 9 </ListView>
TN8001👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hihijiji

2020/07/04 09:15

新たな質問をする前に過去の質問の回答にレスを付けてください。
guest

回答2

0

ベストアンサー

ボタンを押したらある項目を選択する

C# - C#のWPFでListViewの内容を全て取得するためにはどうしたら良いのでしょうか?|teratail で、
lv.SelectedIndex = count;
とされていますが「ある項目」とはインデックスでは指定できないということでしょうか?

lv.SelectedItemもありますが、値が同じでもインスタンスが別ですと選択されません。

xml

1<Window 2 x:Class="Questions275082.MainWindow" 3 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 Width="800" 6 Height="450"> 7 <DockPanel> 8 <StackPanel DockPanel.Dock="Top"> 9 <Button Click="list_add_Click" Content="add" /> 10 <Button Click="list_select_Click" Content="select" /> 11 </StackPanel> 12 <Grid> 13 <Grid.ColumnDefinitions> 14 <ColumnDefinition /> 15 <ColumnDefinition /> 16 </Grid.ColumnDefinitions> 17 18 <ListView x:Name="lv" SelectionMode="Single"> 19 <ListView.View> 20 <GridView> 21 <GridViewColumn DisplayMemberBinding="{Binding Path=[0]}" Header="hoge" /> 22 <GridViewColumn DisplayMemberBinding="{Binding Path=[1]}" Header="fuga" /> 23 </GridView> 24 </ListView.View> 25 </ListView> 26 27 <ListView 28 x:Name="lv2" 29 Grid.Column="1" 30 ItemsSource="{Binding Items, ElementName=lv}" 31 SelectionMode="Single"> 32 <ListView.View> 33 <GridView> 34 <GridViewColumn DisplayMemberBinding="{Binding Path=[0]}" Header="hoge" /> 35 <GridViewColumn DisplayMemberBinding="{Binding Path=[1]}" Header="fuga" /> 36 </GridView> 37 </ListView.View> 38 </ListView> 39 </Grid> 40 </DockPanel> 41</Window>

cs

1using System.Linq; 2using System.Windows; 3 4namespace Questions275082 5{ 6 public partial class MainWindow : Window 7 { 8 private int count = 0; 9 10 public MainWindow() 11 { 12 InitializeComponent(); 13 } 14 15 private void list_add_Click(object sender, RoutedEventArgs e) 16 { 17 count++; 18 string count_show = count + "番目の項目"; 19 lv.Items.Add(new string[] { count_show, "×" }); 20 lv.SelectedIndex = count - 1; // 0始まりなので 21 lv.ScrollIntoView(lv.SelectedItem); 22 } 23 24 private void list_select_Click(object sender, RoutedEventArgs e) 25 { 26 // インデックスで指定する場合(0始まり) 27 int index = lv2.SelectedIndex; 28 lv.SelectedIndex = index; 29 lv.ScrollIntoView(lv.SelectedItem); 30 31 32 // 選択された値で指定する場合 33 //object obj = lv2.SelectedItem; 34 //lv.SelectedItem = obj; 35 //lv.ScrollIntoView(lv.SelectedItem); 36 37 38 // これはできない(インスタンスが別なので) 39 //object obj = new string[] { "1番目の項目", "×" }; 40 //lv.SelectedItem = obj; 41 //lv.ScrollIntoView(lv.SelectedItem); 42 43 // やるとするとlv.Itemsから探してくる必要がある 44 //object obj = lv.Items.Cast<string[]>().FirstOrDefault(x => x[0] == "1番目の項目"); 45 //lv.SelectedItem = obj; 46 //lv.ScrollIntoView(lv.SelectedItem); 47 } 48 } 49}

selectボタンを押すと、右(lv2)で選択したものを左(lv)も選択します。

投稿2020/07/04 10:32

編集2023/07/22 08:29
TN8001

総合スコア9244

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Punio

2020/07/04 13:20

表記が分かりづらく、申し訳ありません。 ですが、回答通りのやり方で実装ができました。ありがとうございました。
guest

0

こちらが参考になりませんか?

投稿2020/07/04 09:24

YAmaGNZ

総合スコア10222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問