我正在尝试编写一个 WinForm 应用程序来跟踪我的照片、照片的发布位置以及照片中的人物。我已经使用这些信息创建了一个 SQL 后端数据库。我创建了一个模型(非编程人员)类来构造该对象,然后创建了一个连接类,该连接类连接到数据库并执行查询并使用数据库中的值创建一个列表。
我能够在 flowpanel 布局中生成一组图像,循环访问并抓取照片。从 Form1_Load 的同一部分,我可以将列表中的每个元素输出到控制台。我遇到的问题是将这些值传递给 PictureBox1_Click 处理程序。我可以毫无问题地获取 URL,因为它是 PictureBox 对象的一部分,但我不知道如何获取与我单击发送的给定照片关联的整个 Model 对象。目的是,当我单击照片时,布局中的文本标签应填充数据库中的名称、位置、日期等值。
我尝试将整个列表传递给单击处理程序,但失败了,我尝试从加载事件重载传递给单击事件,这给了我在图片框上投射错误。
private void PictureBox1_Click(object sender, EventArgs e)
{
PictureBox p = (PictureBox)sender;
string j = p.ImageLocation;
MfNameTxt.Text = "Chris";
MessageBox.Show("Clicked! " + j);
}
private void Form1_Load(object sender, EventArgs e)
{
daoConn dc = new daoConn();
List<Model> models = new List<Model>();
string url;
string fName;
models = dc.GetAllModels();
foreach (Model m in models)
{
int tempValue;
tempValue = 1;
PictureBox pb = new PictureBox();
url = baseUrl + m.MhsUrl;
fName = m.mFirstName;
Size size = new Size(100, 100);
pb.ImageLocation = url;
pb.Size = size;
pb.Click += new EventHandler(PictureBox1_Click);
pb.SizeMode = PictureBoxSizeMode.Zoom;
modelHsFlowLayout.Controls.Add(pb);
}
}
当我尝试 pb.Click += new EventHandler((s, e1) => this.PictureBox1_Click(sender, e, tempValue)); 时 只是为了发送一个临时值并演示我可以在那里传递一些东西,我得到了案例错误:Message=Unable to cast object of type '_pictures_v2.Form1' to type 'System.Windows.Forms.PictureBox'。
侃侃尔雅
相关分类