Salve a tutti.
Sto giocando un pò con le WF di C# 2005 EE e mi son messo a fare un esercizio molto semplice.
La Form ha due TextBox (textBox1, textBox2) , una ComboBox (comboBox1) ed una Label (label1).
Il funzionamento è questo:
si scrive un numero su textBox1, uno su textBox2 ed in automatico, o selezionando l'operazione dalla comboBx, si effettua l'operazione.
Tutto sembra funzionare ma ho questi dubbi:
1 - come posso evitare la selezione e/o modifica delle items della ComboBox ?
2 - perchè l'evento textBox2_TextChanged non viene bruciato come il primo ?
3 - la comboBox1 l'ho popolata bene o ci sono pratiche migliori per aggiungere valori ? (collections, object list ... altro ?)
codice:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
private String[] comboData1 = new String[4];
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
comboData1[0] = "addizione";
comboData1[1] = "divisione";
comboData1[2] = "moltiplicazione";
comboData1[3] = "sottrazione";
comboBox1.DataSource = comboData1;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e, String input1, String input2)
{
Double t1, t2;
input1 = normalInput(input1);
input2 = normalInput(input2);
if (input1.Length > 0 && input2.Length > 0)
{
t1 = Convert.ToDouble(input1);
t2 = Convert.ToDouble(input2);
switch (comboBox1.SelectedValue.ToString())
{
case "addizione":
t1 = t1 + t2;
break;
case "divisione":
t1 = t1 / t2;
break;
case "moltiplicazione":
t1 = t1 * t2;
break;
case "sottrazione":
t1 = t1 - t2;
break;
};
label1.Text = t1.ToString();
}
else
label1.Text = "";
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
comboBox1_SelectedIndexChanged(sender, e, textBox1.Text, textBox2.Text);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
comboBox1_SelectedIndexChanged(sender, e, textBox1.Text, textBox2.Text);
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
comboBox1_SelectedIndexChanged(sender, e, textBox1.Text, textBox2.Text);
}
private String normalInput(String input)
{
return System.Text.RegularExpressions.Regex.Replace(input, @"[^\d,]+", "");
}
}
}
Grazie