PictureBox用箭头键选择switchnig

时间:2015-11-02 17:48:53

标签: c# keyboard picturebox

我需要帮助我有一套PictureBox(40),我需要用箭头选择这些图片框。我的意思是当我在第一张照片上并按右箭头键(边框更改 - 选中)时,第一张照片的边框应切换为无,然后下一张切换到边框FixedSingle。

一个想法是:

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;
    }}}

1 个答案:

答案 0 :(得分:0)

您可以创建一个图片框列表。 然后,例如,您可以添加索引器(只是为了保持简单)。 索引器是一个int(或者在你的情况下可以是一个字节),它存储当前所选图片框的索引。 如果用户按下#34;右箭头&#34; key只需更改当前索引图片框的边框,递增索引器并更新&#34;现在索引的图片框&#34;。

    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;
    }

这只是设置了bordertyle。如果你想真正选择图片框,你还需要实现它(picturebox.select();

最好一般地创建图片框。因此,您无需手动将所有这些内容添加到列表中。

以下是添加图片框的通用代码(在本例中为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);
    }