如何计算选择了哪个面板项目

时间:2015-05-28 17:11:38

标签: c# panel counting

我正在编写一个用于浏览图片的小C#程序,但是我被卡住了。

我的Panel已满PictureBoxes,有没有办法计算点击的PictureBoxes的数量?例如,如果我有ListBox,我可以轻松输入listBox1.SelectedIndex并获取该号码。

我认为使用Panel并不容易,但是实际上有什么方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:1)

这取决于你真正想做的事情。没有PictureBoxes的内置属性可以选择它们或标记它们。

您可以在其PictureBox事件中获取Panel的{​​{1}}集合中Controls的索引,如下所示:

Click

您可以并且可能应该将相同的事件分配给所有 PB'private void pictureBox_Click(object sender, EventArgs e) { int index = yourPanel.Controls.IndexOf(sender as PictureBox ); }

如果您只是想使用Clicks

PictureBox

或者您可以循环PictureBox pb = sender as PictureBox; pb.Image = ... 以找到Controls的{​​{1}}。但即使它只是键盘焦点,并且,因为只有一个,即使单Focus次点击也不会持续...所以这是不推荐

因此,如果您想引用最后点击的PB,只需将其存储在类变量中,或者可以存储在Button中:

Panel's Tag

如果您想收集多个PB,可以将它们添加到PictureBox selectedPB = null; private void pictureBox_Click(object sender, EventArgs e) { selectedPB = sender as PictureBox; // or yourPanel.Tag = sender as PictureBox; }

List

并以List<PictureBox> clickedBoxes = new List<PictureBox>(); private void pictureBox_Click(object sender, EventArgs e) { PictureBox pb = sender as PictureBox; if (!clickedBoxes.Contains(pb) ) clickedBoxes.Add(pb); } ..

的身份访问该号码

答案 1 :(得分:0)

尝试使用&#39; SelectedItem&#39; ListBox的属性,并将其绑定到ViewModel上的属性。

如果您使用StackPanel之类的内容?然后,不,StackPanel没有内置此功能。使用带有自定义模板的ListBox。