我正在编写一个用于浏览图片的小C#程序,但是我被卡住了。
我的Panel
已满PictureBoxes
,有没有办法计算点击的PictureBoxes
的数量?例如,如果我有ListBox
,我可以轻松输入listBox1.SelectedIndex
并获取该号码。
我认为使用Panel
并不容易,但是实际上有什么方法可以做到这一点吗?
答案 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。