2017-05-15 4 views
3

私は学校のための "ロックペーパーはさみトカゲのスポーク"ゲームを作成しています。私はタグプロパティを使用して対応する名前でビットマップイメージにタグを付ける必要がある割り当ての部分に固執しています。私は名前の配列とビットマップイメージの配列を作成しました。対応する文字列の値でビットマップの配列にタグを付ける

タグプロパティを使用してこれを行う方法がわかりません。正確な命令は、次のとおりです。

は、それぞれにコードを追加し、文字列値を含むように「ロック」、「紙」、「はさみ」、「トカゲ」、「スポックを」文字列オブジェクトの配列を作成し、それを初期化しますビットマップは対応する文字列値で置き換えられます。 (例:ビットマップ "properties.resources.rock" 文字列 "ロック" でタグ付けされなければならない。

private void Form1_Load(object sender, EventArgs e) 
{ 
    string[] names = 
    { 
     "rock", 
     "paper", 
     "scissors", 
     "lizard" , 
     "spock" 
    }; 

    Bitmap[] bitmaps = 
    { 
     Properties.Resources.rock, 
     Properties.Resources.paper, 
     Properties.Resources.scissors, 
     Properties.Resources.lizard, 
     Properties.Resources.spock, 
    }; 
} 

私はrock.Tag = properties.resources.rockを追加しようとしました。

私はnames[0].tag = properties.resources.rockを試してみた。

私もproperties.resources.rock.Tagを試しました。

教授は、まだタグプロパティを使用する方法を教えてくれていないので、わかりやすいものが欠けていると思います。 yのヘルプが評価されます。

私のフルコードはここにありますが、非常に不完全です。 PictureBox含む

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace Lab5 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      string[] names = 
      { 
       "rock", 
       "paper", 
       "scissors", 
       "lizard" , 
       "spock" 
      }; 

      Bitmap[] bitmaps = 
      { 
       Properties.Resources.rock, 
       Properties.Resources.paper, 
       Properties.Resources.scissors, 
       Properties.Resources.lizard, 
       Properties.Resources.spock, 
      }; 

      // Following array will not actually be used 
      // PictureBox[] pics = new PictureBox[bitmaps.Length]; 

      for (int i = 0; i < bitmaps.Length; i++) 
      { 
       PictureBox pic = new PictureBox(); 
       pic.Image = bitmaps[i]; 
       pic.Location = new Point(20 + (i * 100), 20); 
       pic.SizeMode = PictureBoxSizeMode.AutoSize; 
       Controls.Add(pic); 
       pic.Click += clickHandler; 
      } 
     } 

     private void displayImages() 
     { 
      // Move code from form1_load to here 
     } 

     //click handler for every picture 
     private void clickHandler(object sender, EventArgs e) 
     { 
      MessageBox.Show("You clicked a picture box"); 
     } 

     private void playAgainButton_Click(object sender, EventArgs e) 
     { 
      // call display images here 
     } 
    } 
} 
+0

:あなたはこのようにクリックされた画像の名前を表示することができ、あなたのクリックハンドラで次に

pic.Tag = names[i]; 

あなたがPictureBoxesを初期化しているあなたのforループに次の行を追加します。 PictureBoxには 'Tag'プロパティがあります –

答えて

1

すべてのWinFormsコントロールは、任意のオブジェクトに設定することができTag性質を持っています。おそらく、あなたの教授はそれを使用して写真を対応する名前にリンクさせることを望んでいます。

private void clickHandler(object sender, EventArgs e) 
{ 
    PictureBox pic = (PictureBox)sender;  // get the control that was clicked on 
    string name = (string)pic.Tag;   // retrieve the name from the Tag property 
    MessageBox.Show("You clicked " + name); 
} 
関連する問題