Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C#] ComboBox - Impedire modifica

    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
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  2. #2
    up
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da andr3a
    1 - come posso evitare la selezione e/o modifica delle items della ComboBox ?
    Hai fatto una ricerca nel forum o dato un'occhiata alla documentazione del controllo?

    Originariamente inviato da andr3a
    2 - perchè l'evento textBox2_TextChanged non viene bruciato come il primo ?
    "Bruciato" non è un termine informatico del tutto adatto al contesto. Cosa vuol dire?

    Originariamente inviato da andr3a
    3 - la comboBox1 l'ho popolata bene o ci sono pratiche migliori per aggiungere valori ? (collections, object list ... altro ?)
    Se il numero di elementi è prefissato, una Collection o una struttura dati simile non serve a molto. Un banale uso di Add e l'inserimento da codice degli elementi (appena 4, in questo caso) credo sia più che sufficiente.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Originariamente inviato da alka
    Hai fatto una ricerca nel forum o dato un'occhiata alla documentazione del controllo?
    mi sembra di ricordare di si nel primo caso, si ma non ho trovato nel secondo (ho usato l'help)


    Originariamente inviato da alka
    "Bruciato" non è un termine informatico del tutto adatto al contesto. Cosa vuol dire?
    se cambio informazioni su textBox_1 mi si aggiorna in automatico la label1, se lo faccio su textBox_2 non mi si aggiorna in automatico la label1 pur avendo la stessa callback di textBox_1
    ovvero:
    private void textBox2_TextChanged

    esiste un motivo valido? Immagino di si


    Originariamente inviato da alka
    Se il numero di elementi è prefissato, una Collection o una struttura dati simile non serve a molto. Un banale uso di Add e l'inserimento da codice degli elementi (appena 4, in questo caso) credo sia più che sufficiente.
    secondo te migliore o peggiore dell'array di stringhe? (Presumo migliore seppur per una sola linea)

    [edit]
    ma questo Add con quale oggetto lo uso ? con la combo no, dato che mi da errore ... quindi avevo scritto bene, giusto?
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #5
    risolto, l'evento non veniva bruciato perchè uno il primo me l'ha associato in automatico, il secondo no ... grazie kenta
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.