2010/08/30(Mon) 10:41:50 編集(投稿者)
別の方法として、以下のような方法もあります。
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 方法2
ActionControls(this, IsTargetControl, ActionTargetControl);
}
private void ActionControls(Control parent, Predicate<Control> condition, Action<Control> action)
{
foreach (Control child in parent.Controls)
{
if (condition(child)) action(child);
ActionControls(child, condition, action);
}
}
// 対象コントロールの抽出条件
private bool IsTargetControl(Control target)
{
Match m = Regex.Match(target.Name, @"^(?:label|button)(\d+)$");
if (m.Success)
{
int counter;
if (int.TryParse(m.Groups[1].Value, out counter))
{
if (counter >= 1 && counter <= 40)
{
return true;
}
}
}
return false;
}
// 対象コントロールに行う処理
private void ActionTargetControl(Control target)
{
target.BackColor = Color.Black;
target.ForeColor = Color.White;
}
}
}