0

我需要创建一种对话框或类似弹出屏幕的东西。我有这个项目数组,然后我需要在对话框中为每个项目创建一个按钮,以便我可以通过单击按钮进行导航。

在 C# 中最好的方法是什么?有人可以指导我吗

4

3 回答 3

3

如果您使用的是,请放置FlowLayoutPanel在您的表单上。然后在运行时将所有控件添加到它。

foreach(var item in items)
{
   Button button = new Button();
   // setup button properties
   // subscribe to events
   flowLayoutPanel.Controls.Add(button);
}

FlowLayoutPanel将自动排列您的控件。

于 2012-11-27T10:13:06.360 回答
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);
}
于 2012-11-27T10:14:40.653 回答
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
}

这是如何使用对话结果输出创建动态对话的示例。

于 2016-11-15T17:07:09.050 回答