, поэтому этот код динамически добавляет кнопки в мое приложение Windows wpf. Я не могу придумать, каким образом я могу вызывать кнопки, которые на самом деле запускаются на сервере, потому что они добавляются случайным образом.
namespace DynamicButtons
{
public partial class Window1
{
public Window1()
{
this.InitializeComponent();
populateButtons();
}
public void populateButtons()
{
int xPos;
int yPos;
Random ranNum = new Random();
for (int i = 0; i < 4; i++)
{
Button foo = new Button();
Style buttonStyle = Window.Resources["CurvedButton"] as Style;
int sizeValue = ranNum.Next(100);
foo.Width = sizeValue;
foo.Height = sizeValue;
xPos = ranNum.Next(200);
yPos = ranNum.Next(300);
foo.HorizontalAlignment = HorizontalAlignment.Left;
foo.VerticalAlignment = VerticalAlignment.Top;
foo.Margin = new Thickness(xPos, yPos, 0, 0);
foo.Style = buttonStyle;
foo.Name = "button" + i;
foo.Click += new RoutedEventHandler(buttonClick);
LayoutRoot.Children.Add(foo);
}
}
private void buttonClick(object sender, EventArgs e)
{
Button clicked = (Button) sender;
// something like certainWindowsButton((i)<-this has to be based on above code) = clicked.Name();
MessageBox.Show("Button's name is: " + clicked.Name);
}
}
}
Каждый раз, когда приложение запускается, кнопки назначаются случайным образом, и я хочу, чтобы я мог взаимодействовать с ними из кода.
So
foo.Name = "button" + i;
означает, что при нажатии любой кнопки назначается номер, но как я могу взаимодействовать с этой кнопкой в коде?
private void buttonClick(object sender, EventArgs e)
{
Button clicked = (Button) sender;
// something like certainWindowsButton((i)<-this has to be based on above code) = clicked.Name();
MessageBox.Show("Button's name is: " + clicked.Name);
}
}
Надеюсь, это имеет смысл.
Чтобы дать вам представление о том, что происходит на уровне проектирования:
![enter image description here](https://i.stack.imgur.com/wP82L.png)
Каждому из этих серых квадратов являются кнопки, каждой кнопке случайным образом назначается назначенное ей имя и номер, и при каждом запуске приложения этим кнопкам присваивается новый номер.
Мне нужен способ, которым, когда ему присваивается номер, я могу запустить событие для этой нажатой кнопки.
Так что случайным образом кнопке был присвоен номер 1, возьмите этот номер 1, а затем назначьте его
private void buttonClick(object sender, EventArgs e)
if
{
button1_Click = clicked.Name(strip away "button" and make sure the (variableNumber leftover matches button(1)_Click);
}
else
button2
и т. Д. И т. Д.
Который затем запускает событие моей кнопки:
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("yay each randomly assigned button now correlates with a real button event");
}
}
}