我需要创建一个对话框或类似弹出屏幕的东西。我有这个项目数组,然后我需要在对话框中为每个项目创建一个按钮,以便我可以通过单击按钮进行导航。
在C#中最好的方法是什么?请有人指导我这个
答案 0 :(得分:3)
如果您使用的是winforms,请在表单上放置FlowLayoutPanel
。然后在运行时将所有控件添加到它。
foreach(var item in items)
{
Button button = new Button();
// setup button properties
// subscribe to events
flowLayoutPanel.Controls.Add(button);
}
FlowLayoutPanel会自动安排您的控件。
答案 1 :(得分:0)
考虑到Dialog或类似的父元素称为sp,ar是要用于创建按钮的元素数组:
for(YourObject obj : ar)
{
System.Windows.Controls.Button newBtn = new Button();
newBtn.Content = obj.YourProperty;
newBtn.Name = "Button" + obj.YourProperty;
sp.Children.Add(newBtn);
}
答案 2 :(得分:0)
我正在玩一些概念,而一部分似乎就是创建动态对话框的典范。您可以向其添加动态按钮创建,组合并使用表格或流程布局面板正确格式化
DialogResult result;
using (var popup = new Form())
{
popup.Size = new Size(1000, 500);
popup.Location = new Point(Convert.ToInt32(this.Parent.Width / 2) - 500, Convert.ToInt32(this.Parent.Height / 2) - 250);
popup.FormBorderStyle = FormBorderStyle.FixedDialog;
popup.MinimizeBox = false;
popup.MaximizeBox = false;
popup.Text = "My title";
var lbl = new Label() { Dock = DockStyle.Top, Padding = new Padding(3), Height = 30 };
lbl.Font = new Font("Microsoft Sans Serif", 11f);
lbl.Text = "Do you want to Continue?";
// HERE you will add your dynamic button creation instead of my hardcoded
var btnYes = new Button { Text = "Yes", Location = new Point(700, 400) };
btnYes.Click += (s, ea) => { ((Form)((Control)s).Parent).DialogResult = DialogResult.Yes; ((Form)((Control)s).Parent).Close(); };
var btnNo = new Button { Text = "No", Location = new Point(900, 400) };
btnNo.Click += (s, ea) => { ((Form)((Control)s).Parent).DialogResult = DialogResult.No; ((Form)((Control)s).Parent).Close(); };
popup.Controls.AddRange(new Control[] { lbl, btnYes, btnNo });
result = popup.ShowDialog(this);
}
if (result == DialogResult.Yes)
{
// do this
}
else
{
// do that
}
这是如何使用对话框结果输出创建动态对话框的示例。