PictureBox select 方向键切换
PictureBox select switchnig with arrow keys
我需要帮助我有一组 PictureBox (40),我需要 select 这些带有箭头的图片框。我的意思是,当我在第一张图片上并按向右箭头键(边框更改 - selected)时,第一张图片的边框应切换为 none,下一张切换为边框 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
{
public 部分 class 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;
}}}
您可以创建图片框列表。
然后,例如,您可以添加一个索引器(只是为了简单起见)。
索引器是一个 int(或者在你的情况下可以是一个字节),它存储当前 selected 图片框的索引。
如果用户按下 "right arrow" 键,只需更改当前索引图片框的边框,增加索引器并更新 "the now indexd picturebox".
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;
}
这只是设置了边框样式。如果你真的想要select图片框你还需要实现它(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;
}
这里是添加事件的方法:只需双击您想要的事件。
然后会自动为您生成一个方法。你应该把它改成
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
changePictureBox(e.KeyData);
}
我需要帮助我有一组 PictureBox (40),我需要 select 这些带有箭头的图片框。我的意思是,当我在第一张图片上并按向右箭头键(边框更改 - selected)时,第一张图片的边框应切换为 none,下一张切换为边框 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
{ public 部分 class 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;
}}}
您可以创建图片框列表。 然后,例如,您可以添加一个索引器(只是为了简单起见)。 索引器是一个 int(或者在你的情况下可以是一个字节),它存储当前 selected 图片框的索引。 如果用户按下 "right arrow" 键,只需更改当前索引图片框的边框,增加索引器并更新 "the now indexd picturebox".
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;
}
这只是设置了边框样式。如果你真的想要select图片框你还需要实现它(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;
}
这里是添加事件的方法:只需双击您想要的事件。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
changePictureBox(e.KeyData);
}