teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

見直しキャンペーン中

2023/08/12 09:49

投稿

TN8001
TN8001

スコア10114

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > this.Controls["label1"].Text = "HIRO";
2
2
 
3
- この書き方は`Windows Forms`のものですので`WPF`では使えません。
3
+ この書き方はWindows FormsのものですのでWPFでは使えません。
4
4
 
5
5
  例えばこんな感じで`MyGrid`の**子**であれば、まとめて切り替えられます。
6
6
  ```cs

1

見直しキャンペーン中

2023/07/23 06:01

投稿

TN8001
TN8001

スコア10114

answer CHANGED
@@ -1,55 +1,55 @@
1
- > this.Controls["label1"].Text = "HIRO";
2
-
3
- この書き方は`Windows Forms`のものですので`WPF`では使えません。
4
-
5
- 例えばこんな感じで`MyGrid`の子であればまとめて切り替えられます。
6
- ```C#
7
- using System.Linq;
8
- using System.Windows;
9
- using System.Windows.Controls;
10
-
11
- namespace Questions292270
12
- {
13
- public partial class MainWindow : Window
14
- {
15
- public MainWindow()
16
- {
17
- InitializeComponent();
18
- }
19
-
20
- private void Button_Click(object sender, RoutedEventArgs e)
21
- {
22
- ToggleImage(Image1);
23
- }
24
-
25
- private void Button_Click2(object sender, RoutedEventArgs e)
26
- {
27
- ToggleImage(Image2);
28
- }
29
-
30
- private void ToggleImage(Image image)
31
- {
32
- // MyGridの子のうちImageだけを列挙
33
- foreach(Image i in MyGrid.Children.OfType<Image>())
34
- {
35
- // Nameで比較してもいいのですが打ち間違えたりするので、直接比較したほうがミスがない
36
- if(image == i)
37
- {
38
- i.Visibility = Visibility.Visible;
39
- }
40
- else
41
- {
42
- i.Visibility = Visibility.Hidden;
43
- }
44
- }
45
- }
46
- }
47
- }
48
- ```
49
-
50
- 「`Window`のすべての`Image`を列挙したい」ような場合は
51
- [VisualTreeHelper クラス (System.Windows.Media) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.visualtreehelper)
52
- を使います。
53
- 参考 [VisualTreeの子孫要素を取得する - xin9le.net](https://blog.xin9le.net/entry/2013/10/29/222336)
54
-
1
+ > this.Controls["label1"].Text = "HIRO";
2
+
3
+ この書き方は`Windows Forms`のものですので`WPF`では使えません。
4
+
5
+ 例えばこんな感じで`MyGrid`の****であればまとめて切り替えられます。
6
+ ```cs
7
+ using System.Linq;
8
+ using System.Windows;
9
+ using System.Windows.Controls;
10
+
11
+ namespace Questions292270
12
+ {
13
+ public partial class MainWindow : Window
14
+ {
15
+ public MainWindow()
16
+ {
17
+ InitializeComponent();
18
+ }
19
+
20
+ private void Button_Click(object sender, RoutedEventArgs e)
21
+ {
22
+ ToggleImage(Image1);
23
+ }
24
+
25
+ private void Button_Click2(object sender, RoutedEventArgs e)
26
+ {
27
+ ToggleImage(Image2);
28
+ }
29
+
30
+ private void ToggleImage(Image image)
31
+ {
32
+ // MyGridの子のうちImageだけを列挙
33
+ foreach(Image i in MyGrid.Children.OfType<Image>())
34
+ {
35
+ // Nameで比較してもいいのですが打ち間違えたりするので、直接比較したほうがミスがない
36
+ if(image == i)
37
+ {
38
+ i.Visibility = Visibility.Visible;
39
+ }
40
+ else
41
+ {
42
+ i.Visibility = Visibility.Hidden;
43
+ }
44
+ }
45
+ }
46
+ }
47
+ }
48
+ ```
49
+
50
+ 「`Window`のすべての`Image`を列挙したい」ような場合は、`VisualTreeHelper`を使います。
51
+ [VisualTreeHelper クラス (System.Windows.Media) | Microsoft Docs](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.media.visualtreehelper)
52
+
53
+ 参考 [VisualTreeの子孫要素を取得する - xin9le.net](https://blog.xin9le.net/entry/2013/10/29/222336)
54
+
55
55
  ほかにもいろいろ方法はありそうですが、もう少し具体的な例でないと何とも言えませんね^^;