ListBox
クリックの頻度を表示するを作成する必要がButton
あります。
ユーザーは、クリックできるボタンの数を選択します。これが私が試したことです:
int clicked;
clicked = int.Parse(((Button)(sender)).Text);
freq_array[clicked]++;
for (int i = 0; i < freq_array[clicked]; i++)
lstFrequencies.Items[clicked] = clicked + "\t\t" + freq_array[clicked];
freq_array
'clicked'変数を使用して、ボタンがクリックされた頻度を追加します。または、そうなるはずです。
デバッグすると、「クリック」は常に0になります。「クリック」は、クリックされたボタンのテキスト値と等しくなります。プログラムを実行しようとすると、「入力文字列が正しい形式ではありませんでした」というエラーが表示されます。
編集:
私はあなたたちの助けを借りて私のプログラムを修正することができました。十分に明確にするために十分なコードを表示していないことに気づき、そのことをお詫びします。私はいくつかのものを追加し、物事を動かさなければならず、すぐにそれを手に入れました。皆さん、ありがとうございました。
将来助けが必要になるかもしれない人のためのコードは次のとおりです。
public partial class Form1 : Form
{
int[] freq_array = new int[11];
int[] numList = new int[11];
int oBase = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
invisiblity();
}
private void invisiblity()
{
foreach (Control ctrl in this.Controls)
{
if (ctrl is Button)
if (Char.IsDigit(ctrl.Text[0]))
ctrl.Visible = false;
}
}
private void btnSetBase_Click(object sender, EventArgs e)
{
Form2 frmDialog = new Form2();
frmDialog.ShowDialog(this);
if (frmDialog.DialogResult == DialogResult.OK)
{
oBase = frmDialog.Base;
//lblOutDigits.Text = oBase.ToString();
for (int i = 0; i < oBase; i++)
{
numList[i] = i;
}
}
ShowBaseButtons(oBase);
}
private void ShowBaseButtons(int last_digit)
{
invisiblity();
foreach (Control ctrl in this.Controls)
{
if (ctrl is Button)
if (Char.IsDigit(ctrl.Text[0]))
if (int.Parse(ctrl.Text) <= last_digit - 1)
ctrl.Visible = true;
}
}
private void btnN_Click(object sender, EventArgs e)
{
lblOutDigits.Text += ((Button)(sender)).Text;
int clicked = int.Parse(((Button)(sender)).Text);
freq_array[clicked]++;
}
private void btnShowFreq_Click(object sender, EventArgs e)
{
lstFrequencies.Items.Clear();
for (int i = 0; i < oBase; i++)
lstFrequencies.Items.Add(numList[i] + " \t\t\t" + freq_array[i]);
}