C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: コントロールを一気に設定する方法について


(過去ログ 89 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■52937 / inTopicNo.1)  コントロールを一気に設定する方法について
  
□投稿者/ 裕猫 (169回)-(2010/08/30(Mon) 09:52:01)

分類:[C#] 

こんにちは
 コードを書いていてふと考えました。コントロールのバックカラーやフォアカラーをプログラムで指定するとき
this.label1.BackColor = Color.Black;
this.label1.ForeColor = Color.White;
と一つづつ指定しています。が元来めんどくさがりやの私はふと思いました。たとえばラベルやボタンの1番から40番までを一気に指定する方法があるんじゃないかい?と....
そこで検索してみたのですがヒットしません。やはりできないのでしょうか?そこでできるかできないかを教えていただきたいです。よろしくお願いいたします。
引用返信 編集キー/
■52938 / inTopicNo.2)  Re[1]: コントロールを一気に設定する方法について
□投稿者/ ごう (167回)-(2010/08/30(Mon) 10:13:05)
No52937 (裕猫 さん) に返信
>そこでできるかできないかを教えていただきたいです。

結論から言えば、できます。
「コントロール配列」というキーワードで検索すれば、色々と出てきますので、試してみてください。
http://dobon.net/vb/dotnet/control/buttonarray.html
引用返信 編集キー/
■52939 / inTopicNo.3)  Re[1]: コントロールを一気に設定する方法について
□投稿者/ よねKEN (591回)-(2010/08/30(Mon) 10:16:41)
よねKEN さんの Web サイト
2010/08/30(Mon) 10:35:54 編集(投稿者)
まずは最も簡単な方法をご紹介しておきます。

FormのLoadイベントなどで以下のコードを記述します。
// 方法1
Control[] controls = { button1, label1 };  // 対象とするすべてのコントロールを配列にセット
foreach (Control control in controls)
{
    control.BackColor = Color.Black;
    control.ForeColor = Color.White;
}

引用返信 編集キー/
■52944 / inTopicNo.4)  Re[1]: コントロールを一気に設定する方法について
□投稿者/ よねKEN (592回)-(2010/08/30(Mon) 10:41:40)
よねKEN さんの Web サイト
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;
        }
    }
}

引用返信 編集キー/
■52945 / inTopicNo.5)  Re[2]: コントロールを一気に設定する方法について
□投稿者/ 裕猫 (170回)-(2010/08/30(Mon) 10:52:20)
ごう さん よねKEN さん
返信ありがとうございます。なるほど配列に入れて使うわけですね。了解しました。
参考URLなど見ましたが、5293のよねKENさんのコードが短くて楽でよさそうなのでその方法でやてみます。ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -