Вы можете использовать OfType<Button>
, чтобы найти все кнопки в элементе управления контейнером, где вы их добавили (f .e. Panel
). Тогда liitle мощность немного LINQ дает вам правильную кнопку (ы):
var kittenButtons = panel.Controls.OfType<Button>()
.Where(btn => btn.Text.Contains("Kittens"));
foreach(Button btn in kittenButtons)
btn.PerformClick();
Если вы просто хотите, чтобы нажать первый:
Button kittenButton = panel.Controls.OfType<Button>()
.FirstOrDefault(btn => btn.Text.Contains("Kittens"));
if(kittenButton != null)
kittenButton.PerformClick();
Для чего это стоит, здесь также который возвращает элементы управления рекурсивно по отложенному исполнению, что позволяет использовать только первые найденные Buttton
или потреблять все по дороге:
public static IEnumerable<T> GetChildControlsRecursive<T>(this Control root) where T : Control
{
if (root == null) throw new ArgumentNullException("root");
var stack = new Stack<Control>();
stack.Push(root);
while (stack.Count > 0)
{
Control parent = stack.Pop();
foreach (Control child in parent.Controls)
{
if (child is T)
yield return (T)child;
stack.Push(child);
}
}
yield break;
}
Теперь вы можете использовать подобный код, как описано выше, чтобы получить, например, первую кнопку соответствия или все:
var kittenButtons = this.GetChildControlsRecursive<Button>()
.Where(b => b.Text.Contains("Kittens"));
// search just until the first button is found
Button firstKittenButton = kittenButtons.FirstOrDefault();
if(firstKittenButton != null) firstKittenButton.PerformClick;
// loop all
foreach(Button btn in kittenButtons)
btn.PerformClick();
Хранить его в переменной (или коллекции или словаря), так же, как любое другое значение. – SLaks
Мне действительно нужно было бы создать список кнопок, чтобы получить их? – Amorphous
Эти кнопки отображаются на вашей форме? Вы уверены, что не хотите добавлять их в коллекцию управления вашей формой? Затем вы можете перебрать все кнопки в коллекции управления формы, чтобы найти интересующую вас кнопку, и есть даже удобные методы для этого. – CodeCaster