2015-11-02 68 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

如何获得用户输入(按键)? (我测试了它,它对我有用) –