C# 动态创建按钮以调用方法并传入参数
我有一个带有键值对的字典,需要循环遍历键值对,并为每个键值对创建一个按钮,然后连接该按钮以调用一个方法DisplayDocument(stringid),并将键作为参数传入 这是我到目前为止所拥有的C# 动态创建按钮以调用方法并传入参数,c#,asp.net,C#,Asp.net,我有一个带有键值对的字典,需要循环遍历键值对,并为每个键值对创建一个按钮,然后连接该按钮以调用一个方法DisplayDocument(stringid),并将键作为参数传入 这是我到目前为止所拥有的 // test data var documents= new Dictionary<string,string>(); documents.Add("69110","Diploma"); documents.Add("76
// test data
var documents= new Dictionary<string,string>();
documents.Add("69110","Diploma");
documents.Add("76404", "Licensure");
foreach (KeyValuePair<string, string> item in documents)
{
MyStringBuilder=MyStringBuilder.Append(item.Value + " " + item.Key + "<br />");
}
printFaxDocuments.InnerHtml = MyStringBuilder.ToString();
//测试数据
var documents=newdictionary();
文件。添加(“69110”、“文凭”);
文件。添加(“76404”、“许可证”);
foreach(文档中的KeyValuePair项)
{
MyStringBuilder=MyStringBuilder.Append(item.Value+“”+item.Key+“
”;
}
printFaxDocuments.InnerHtml=MyStringBuilder.ToString();
我要做的是打印出文档键和值,然后单击一个按钮以查看文档。我构建了一个方法来查看文档,它需要传入键值。我该怎么做
我不知道如何在文本数据中插入按钮。我需要写出键和值添加按钮添加一个
“
”
,然后对字典中的下一项再次执行相同的操作。下面我在OnInit方法中创建了按钮控件,并为每个控件分配了相同的单击事件处理程序
该键存储在Buttons CommandArgument属性中,该属性在事件处理程序中检索并传递给DisplayDocument方法
protected override void OnInit(EventArgs e)
{
// test data
var documents = new Dictionary<string, string>();
documents.Add("69110", "Diploma");
documents.Add("76404", "Licensure");
foreach (KeyValuePair<string, string> item in documents)
{
Button button = new Button();
button.Text = string.Format("Button: {0}", item.Key);
button.CommandArgument = item.Key;
button.Click += ButtonClicked;
ButtonContainer.Controls.Add(button);
}
base.OnInit(e);
}
protected void ButtonClicked(object sender, EventArgs e)
{
Button button = (Button) sender;
string id = button.CommandArgument;
DisplayDocument(id);
}
private void DisplayDocument(string id)
{
//Do something
}
然后,您可以根据需要添加到CSS类以修改布局(边距等)
希望这有帮助。演示了一种更强大的参数传递方法,如果您想传递更复杂的参数
添加单击事件处理程序:
button1.Click += delegate(object sender, EventArgs e) {
button_Click(sender, e, "String or other types eg, enum..", SomeCustomEnum.SomeSelection);
};
然后只需将参数添加到click handler方法:
void button_Click(object sender, EventArgs e, string messageButCanBeIntEtc, SomeCustomEnum type)
{
// do things
}
谢谢,这真的很有帮助。如何添加换行符以使按钮垂直堆叠而不是水平堆叠?
button1.Click += delegate(object sender, EventArgs e) {
button_Click(sender, e, "String or other types eg, enum..", SomeCustomEnum.SomeSelection);
};
void button_Click(object sender, EventArgs e, string messageButCanBeIntEtc, SomeCustomEnum type)
{
// do things
}