回答編集履歴

2

見直しキャンペーン中

2023/07/22 08:29

投稿

TN8001
TN8001

スコア9317

test CHANGED
@@ -1,207 +1,104 @@
1
1
  > ボタンを押したらある項目を選択する
2
2
 
3
-
4
-
5
3
  [C# - C#のWPFでListViewの内容を全て取得するためにはどうしたら良いのでしょうか?|teratail](https://teratail.com/questions/274705) で、
6
-
7
4
  `lv.SelectedIndex = count;`
8
-
9
5
  とされていますが「ある項目」とはインデックスでは指定できないということでしょうか?
10
-
11
-
12
6
 
13
7
  `lv.SelectedItem`もありますが、値が同じでもインスタンスが別ですと選択されません。
14
8
 
15
-
16
-
17
- ```xaml
9
+ ```xml
18
-
19
10
  <Window
20
-
21
11
  x:Class="Questions275082.MainWindow"
22
-
23
12
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
24
-
25
13
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
26
-
27
14
  Width="800"
28
-
29
15
  Height="450">
30
-
31
16
  <DockPanel>
32
-
33
17
  <StackPanel DockPanel.Dock="Top">
34
-
35
18
  <Button Click="list_add_Click" Content="add" />
36
-
37
19
  <Button Click="list_select_Click" Content="select" />
38
-
39
20
  </StackPanel>
40
-
41
21
  <Grid>
42
-
43
22
  <Grid.ColumnDefinitions>
44
-
45
23
  <ColumnDefinition />
46
-
47
24
  <ColumnDefinition />
48
-
49
25
  </Grid.ColumnDefinitions>
50
26
 
51
-
52
-
53
27
  <ListView x:Name="lv" SelectionMode="Single">
54
-
55
28
  <ListView.View>
56
-
57
29
  <GridView>
58
-
59
30
  <GridViewColumn DisplayMemberBinding="{Binding Path=[0]}" Header="hoge" />
60
-
61
31
  <GridViewColumn DisplayMemberBinding="{Binding Path=[1]}" Header="fuga" />
62
-
63
32
  </GridView>
64
-
65
33
  </ListView.View>
66
-
67
34
  </ListView>
68
35
 
69
-
70
-
71
36
  <ListView
72
-
73
37
  x:Name="lv2"
74
-
75
38
  Grid.Column="1"
76
-
77
39
  ItemsSource="{Binding Items, ElementName=lv}"
78
-
79
40
  SelectionMode="Single">
80
-
81
41
  <ListView.View>
82
-
83
42
  <GridView>
84
-
85
43
  <GridViewColumn DisplayMemberBinding="{Binding Path=[0]}" Header="hoge" />
86
-
87
44
  <GridViewColumn DisplayMemberBinding="{Binding Path=[1]}" Header="fuga" />
88
-
89
45
  </GridView>
90
-
91
46
  </ListView.View>
92
-
93
47
  </ListView>
94
-
95
48
  </Grid>
96
-
97
49
  </DockPanel>
98
-
99
50
  </Window>
100
-
101
51
  ```
102
52
 
103
-
104
-
105
- ```C#
53
+ ```cs
106
-
107
54
  using System.Linq;
108
-
109
55
  using System.Windows;
110
56
 
111
-
112
-
113
57
  namespace Questions275082
114
-
115
58
  {
116
-
117
59
  public partial class MainWindow : Window
118
-
119
60
  {
120
-
121
61
  private int count = 0;
122
62
 
123
-
124
-
125
63
  public MainWindow()
126
-
127
64
  {
128
-
129
65
  InitializeComponent();
130
-
131
66
  }
132
67
 
133
-
134
-
135
68
  private void list_add_Click(object sender, RoutedEventArgs e)
136
-
137
69
  {
138
-
139
70
  count++;
140
-
141
71
  string count_show = count + "番目の項目";
142
-
143
72
  lv.Items.Add(new string[] { count_show, "×" });
144
-
145
73
  lv.SelectedIndex = count - 1; // 0始まりなので
146
-
147
74
  lv.ScrollIntoView(lv.SelectedItem);
148
-
149
75
  }
150
76
 
151
-
152
-
153
77
  private void list_select_Click(object sender, RoutedEventArgs e)
154
-
155
78
  {
156
-
157
79
  // インデックスで指定する場合(0始まり)
158
-
159
80
  int index = lv2.SelectedIndex;
160
-
161
81
  lv.SelectedIndex = index;
162
-
163
82
  lv.ScrollIntoView(lv.SelectedItem);
164
83
 
165
84
 
166
-
167
-
168
-
169
85
  // 選択された値で指定する場合
170
-
171
86
  //object obj = lv2.SelectedItem;
172
-
173
87
  //lv.SelectedItem = obj;
174
-
175
88
  //lv.ScrollIntoView(lv.SelectedItem);
176
89
 
177
90
 
178
-
179
-
180
-
181
91
  // これはできない(インスタンスが別なので)
182
-
183
92
  //object obj = new string[] { "1番目の項目", "×" };
184
-
185
93
  //lv.SelectedItem = obj;
186
-
187
94
  //lv.ScrollIntoView(lv.SelectedItem);
188
95
 
189
-
190
-
191
96
  // やるとするとlv.Itemsから探してくる必要がある
192
-
193
97
  //object obj = lv.Items.Cast<string[]>().FirstOrDefault(x => x[0] == "1番目の項目");
194
-
195
98
  //lv.SelectedItem = obj;
196
-
197
99
  //lv.ScrollIntoView(lv.SelectedItem);
198
-
199
100
  }
200
-
201
101
  }
202
-
203
102
  }
204
-
205
103
  ```
206
-
207
104
  `select`ボタンを押すと、右(lv2)で選択したものを左(lv)も選択します。

1

些細な点

2020/07/04 10:46

投稿

TN8001
TN8001

スコア9317

test CHANGED
@@ -138,7 +138,7 @@
138
138
 
139
139
  count++;
140
140
 
141
- string count_show = count.ToString() + "番目の項目";
141
+ string count_show = count + "番目の項目";
142
142
 
143
143
  lv.Items.Add(new string[] { count_show, "×" });
144
144
 
@@ -166,7 +166,7 @@
166
166
 
167
167
 
168
168
 
169
- //// 選択された値で指定する場合
169
+ // 選択された値で指定する場合
170
170
 
171
171
  //object obj = lv2.SelectedItem;
172
172
 
@@ -180,7 +180,9 @@
180
180
 
181
181
  // これはできない(インスタンスが別なので)
182
182
 
183
- //lv.SelectedItem = new string[] { "1番目の項目", "×" };
183
+ //object obj = new string[] { "1番目の項目", "×" };
184
+
185
+ //lv.SelectedItem = obj;
184
186
 
185
187
  //lv.ScrollIntoView(lv.SelectedItem);
186
188
 
@@ -188,7 +190,7 @@
188
190
 
189
191
  // やるとするとlv.Itemsから探してくる必要がある
190
192
 
191
- //var obj = lv.Items.Cast<string[]>().FirstOrDefault(x => x[0] == "1番目の項目");
193
+ //object obj = lv.Items.Cast<string[]>().FirstOrDefault(x => x[0] == "1番目の項目");
192
194
 
193
195
  //lv.SelectedItem = obj;
194
196