我正在创建一个winforms应用程序,它在运行时生成许多面板。我希望每个面板在点击时打开一个Web链接。
面板在运行时生成:
for (int i = 0; i < meetings.Count(); i++) {
Panel door = new Panel();
door.Location = new System.Drawing.Point((i * 146) + (i * 10) + 10, 10);
door.Size = new System.Drawing.Size(146, 300);
door.BackgroundImage = ConferenceToolkit.Properties.Resources.Door;
door.Click += new EventHandler(door_Click);
Controls.Add(door);
}
我希望事件处理程序指向以某种方式存储在Panel属性中的URL。 (在网络表单上,我可以使用属性[&#34; myAttribute&#34;]但这似乎不适用于WinForms):
private void door_Click(object sender, EventArgs e)
{
Panel p = sender as Panel;
Process.Start(p.Attributes["url"]);
}
答案 0 :(得分:2)
有很多选项,您可以将网址存储在Panel
)Text
属性中未使用:
door.Text = FindUrl(meetings[i]);
用过:
Process.Start(p.Text);
作为替代方案,您可以使用通用 Tag
属性:
door.Tag = FindUrl(meetings[i]);
使用:
Process.Start(p.Tag.ToString());
对于这些事情, Tag属性通常是正确的位置,因为它的类型为object
,您甚至可以使用它来存储复杂类型(如果您需要的不仅仅是一个简单的字符串)。
答案 1 :(得分:1)
您可以在Panel的标签属性
中存储所需的URL例如
p.Tag = "www.google.com";
然后您可以在使用在点击方法
中投射Panel时使用它.Tag属性的参考
http://msdn.microsoft.com/en-us/library/system.windows.forms.control.tag(v=vs.110).aspx