前提・実現したいこと
WPFで、複数のButtonコントロールとそれに対応した複数のImageコントロールがあるアプリを作っています。ButtonコントロールとImageコントロールはXAMLで定義したものを、cs側で配列のように扱えるように読み込んでいます。Button[0],Image[0]のような感じで。
各Button.Contentには識別のために文字列が入っています。
ここで、Button[x]をクリックしたときにImage[x]に画像が動的に表示されるようにしたいです。また、クリック回数で場合分けして画像が切り替わるようにもしたいです。
(表示なし)→画像AAA.png→画像BBB.png→(表示なし)→以下ループ
といった感じに。
以下コードになります。
C#
1 2 private int[] count = new int[5];//ボタンのクリック回数をリストに保存 3 private System.Windows.Controls.Button[] button_ = new System.Windows.Controls.Button[5]; 4 private System.Windows.Controls.Image[] image_ = new System.Windows.Controls.Image[5]; 5 6 private void button_Click(object sender, RoutedEventArgs e) 7 { 8 //int x; 9 if (count[x] == 0) //クリック回数が0回 10 { 11 image_[x] = new Image(); 12 image_[x].Visibility = Visibility.Visible; 13 BitmapImage bi = new BitmapImage(); 14 bi.BeginInit(); 15 bi.UriSource = new Uri("/Resources/AAA.png", UriKind.Relative); 16 bi.EndInit(); 17 image_[x].Source = bi; 18 count[x]++; 19 } 20 else if (count[x] == 1)//クリック回数が1回 21 { 22 image_[x] = new Image(); 23 image_[x].Visibility = Visibility.Visible; 24 BitmapImage bi = new BitmapImage(); 25 bi.BeginInit(); 26 bi.UriSource = new Uri("/Resources/BBB.png", UriKind.Relative); 27 bi.EndInit(); 28 image_[x].Source = bi; 29 count[x]++; 30 } 31 else if (count[x] == 2)//クリック回数が2回 32 { 33 image_[x].Visibility = Visibility.Hidden; 34 count[x] = 0; 35 } 36 } 37 38 private void Window_Loaded(object sender, RoutedEventArgs e) 39 { 40 for (int i = 0; i < 5; i++)//各コントロールを配列化 41 { 42 button_[i] = this.FindName("Button_" + i.ToString()) as System.Windows.Controls.Button; 43 image_[i] = this.FindName("ButtonImage_" + i.ToString()) as System.Windows.Controls.Image; 44 } 45 }
XAML
1 //座標情報など省きます。 2 <Image x:Name="ButtonImage_0" IsHitTestVisible="False"/> 3 ... 4 <Image x:Name="ButtonImage_4" IsHitTestVisible="False"/> 5 6 <Button x:Name="Button_0" Click="button_Click"> 7 ... 8 <Button x:Name="Button_4" Click="button_Click"> 9
これだと画像は表示されませんでした。
countが変わっているのは確認できたので、Buttonコントロールの配列化はできていると思います。Imageコントロールの方が参照されていないような気がしています。
初心者故、そもそもの前提知識もあやふやなところがあるので、Imageコントロールはこのように参照できない等の間違いがあればそちらも教えていただきたいです。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/05 02:32