我需要帮助我有一套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;
}}}
答案 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;
}
这里添加事件的方式:只需双击你想要的事件。 然后为您自动生成一个方法。你应该把它改成
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
changePictureBox(e.KeyData);
}