0

チェックボックスがチェックされるたびに、進行状況バーに段階的に追加できるようにしたいと考えています。したがって、4 つのチェック ボックスのうち 1 つがチェックされている場合、プログレス バーの 25% に等しいとしましょう。さらに、4 つのチェック ボックスのいずれかをオフにすると、それに応じてプログレス バーが減少します。これは私が立ち往生しているものです。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
  public partial class Form1 : Form
  {
    public Form1()
    {
        InitializeComponent();
    }

    private void progressBar1_Click(object sender, EventArgs e)
    {
        progressBar1.Minimum = 0;
        progressBar1.Maximum = 100;
        int num1 = progressBar1.Maximum / 4;
        int num2 = progressBar1.Maximum / 4;
        int num3 = progressBar1.Maximum / 4;
        int num4 = progressBar1.Maximum / 4;
        int numAns;
        numAns = num1 + num2 + num3 + num4;
        progressBar1.Value = numAns;
    }

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if(checkBox1.Checked == true)
        {  


        }
        else if (checkBox1.Checked == false)
        {

        }
    }
    private void checkBox2_CheckedChanged(object sender, EventArgs e)
   {

    }
    private void checkBox3_CheckedChanged(object sender, EventArgs e)
    {

    }
    private void checkBox4_CheckedChanged(object sender, EventArgs e)
    {

    }
}

}

4

3 に答える 3

2

4 つのチェックボックスに対して 4 つのメソッドを作成することなく、すべてのチェックボックスに対して同じイベント ハンドラーを使用することができます...

private const Int32 TOTAL_CHECKBOXES = 4;
private static Int32 s_Checks = 0;

private void OnCheckedChanged(object sender, EventArgs e)
{
    if (((CheckBox)sender).Checked)
        ++s_Checks;
    else
        --s_Checks;

    progressBar.Value = s_Checks * (progressBar.Maximum / TOTAL_CHECKBOXES);
}
于 2013-01-20T04:03:58.897 に答える
1

ProgressBar1_click を破棄し、各ボックスに対して、CheckedChanged の ProgressBar1.Value に 25 を加算 (チェックされている場合) または減算 (チェックされていない場合) します。

于 2013-01-20T04:03:54.063 に答える
0

すべてのチェックボックスに同じイベントを関連付けることができます。私はリストに私のものを追加したので、将来さらに追加したい場合は、ハンドラーを追加してリストに追加するだけで完了です。

public Form1()
{

    InitializeComponent();

    checkBox1.CheckedChanged += CheckedChanged_1;
    checkBox2.CheckedChanged += CheckedChanged_1;
    checkBox3.CheckedChanged += CheckedChanged_1;
    checkBox4.CheckedChanged += CheckedChanged_1;

    checkboxesToCount.AddRange(new CheckBox[] {checkBox1, checkBox2, checkBox3, checkBox4});


}

private void CheckedChanged_1(object sender, EventArgs e)
{
    progressBar1.Value = 100 * checkboxesToCount.Count((c) => { return c.Checked; }) / checkboxesToCount.Count;
}
于 2013-01-20T04:17:11.583 に答える