2015-11-02 88 views
0

我需要幫助我有一套圖片框(40),我需要選擇這些圖片框與箭頭。我的意思是,當我在第一張照片上並按右箭頭鍵(邊框變化 - 選中)時,第一張照片的邊框應該切換爲無,然後下一張切換至邊框「固定單拍」。PictureBox選擇switchnig與箭頭鍵

一個想法是:

if (keyData == Keys.Right) { 
    if (PictureBox1.BorderStyle == BorderStyle.FixedSingle) { 
     PictureBox1.BorderStyle = BorderStyle.None; 
     PictureBox2.BorderStyle = BorderStyle.FixedSingle; 
    } else if (PictureBox2.BorderStyle == BorderStyle.FixedSingle) { 
     pictu..... 
    } 
} 

但這種方法需要太多的時間,所以我正在尋找一個更簡單的方法。

有人能幫我找到一個更簡單的方法來做到這一點嗎?

編輯新代碼:

namespace testPics 

{ 公共部分Form1類:表格{

public Form1() 
    { 
     InitializeComponent(); 
    } 
    private void Form1_KeyDown_1(object sender, KeyEventArgs e) 
    { 
     changePictureBox(e.KeyData); 
    } 
    List<PictureBox> myPictureBoxes; 
    int index; 
    public void iniPictureBoxes() 
    { 
     myPictureBoxes = new List<PictureBox>(); 
     myPictureBoxes.Add(pictureBox1); 
     myPictureBoxes.Add(pictureBox2); 
     myPictureBoxes.Add(pictureBox3); 

     index = 0; 
    } 

    public void changePictureBox(Keys keyData) 
    { 
     myPictureBoxes[index].BorderStyle = BorderStyle.None; 

     if (keyData == Keys.Right) 
     { 
      if (index < myPictureBoxes.Count - 1) 
       index++; 
     } 
     else if (keyData == Keys.Left) 
     { 
      if (index > 0) 
       index--; 
     } 
     myPictureBoxes[index].BorderStyle = BorderStyle.FixedSingle; 
    }}} 

回答

0

您可以創建pictureboxes列表。 然後,例如,你可以添加一個索引器(只是爲了保持簡單)。 索引器是一個int(或者在你的情況下可以是一個字節),它存儲當前選擇的圖片框的索引。 如果用戶按下「向右箭頭」鍵,只需更改當前索引圖片框的邊框就可以增加索引器並更新「現在索引的圖片框」。

List<PictureBox> myPictureBoxes; 
    int index; 
    public void iniPictureBoxes() 
    { 
     myPictureBoxes = new List<PictureBox>(); 
     myPictureBoxes.Add(pictureBox1); 
     myPictureBoxes.Add(pictureBox2); 
     index = 0; 
    } 

    public void changePictureBox(Keys keyData) 
    { 
     myPictureBoxes[index].BorderStyle = BorderStyle.None; 

     if(keyData == Keys.Right) 
     { 
      if(index < myPictureBoxes.Count - 1) 
       index++; 
     } 
     else if(keyData == Keys.Left) 
     { 
      if(index>0) 
       index--; 
     } 
     myPictureBoxes[index].BorderStyle = BorderStyle.FixedSingle; 
    } 

這只是設置邊框。如果你想真的選擇圖片盒,你也需要實現它(picturebox.select();

一般創建picturebox可能會更好。因此,您不必手動將其全部添加到列表中。

下面是用於添加pictureboxes(在這種情況下5)通用代碼:

public void iniPictureBoxes() 
    { 
     myPictureBoxes = new List<PictureBox>(); 
     for (int i = 0; i < 5; i++) 
     { 
      PictureBox tempPB = new PictureBox(); 
      tempPB.Location = new Point(i * 15, 10); 
      tempPB.Size = new Size(10, 10); 
      tempPB.BackColor = Color.Black; 
      Controls.Add(tempPB); 
      myPictureBoxes.Add(tempPB); 
     } 
      index = 0; 
    } 

這裏添加事件的方式:只需雙擊ü要擁有該事件。 enter image description here 然後爲您自動生成一個方法。你應該改變它

private void Form1_KeyDown(object sender, KeyEventArgs e) 
    { 
     changePictureBox(e.KeyData); 
    } 
+0

謝謝,我是菜鳥你可以請張貼在這裏的示例代碼? –

+0

謝謝,但代碼不適合我,我把它放到我的代碼中,當我按箭頭時,它不是changin,我怎樣才能做到這一點? –

+0

如何獲得用戶輸入(按鍵)? (我測試了它,它對我有用) –