Domanda sulle messagebox

di il
9 risposte

Domanda sulle messagebox

Buonasera a tutto il forum.
Voglio solo chiedere a voi esperti se è possibile personalizzare una MessageBox, nel mio caso, quello che vorrei personalizzare sono solo le scritte sui pulsanti.

Grazie anticipatamente.

9 Risposte

  • Re: Domanda sulle messagebox

    No, ma puoi creare tu una DialogBox personalizzata molto semplicemente ed usarla
  • Re: Domanda sulle messagebox

    Saluto tutti.
    Grazie mille per la risposta oregon.
    Ho provato a crearmi una DialogBox: L'ho inserita nel progetto come Class, ho fatto una cagata?
    Se no, come faccio a far passare i nuovi dati al Form principale?
    Riesco a Chiamare la DialogBox dal Form principale, ma non riesco a fargli ripassare i dati aggiornati al Form padre.
    Grazie mille.
  • Re: Domanda sulle messagebox

    minotaurus7 ha scritto:


    Ho provato a crearmi una DialogBox: L'ho inserita nel progetto come Class, ho fatto una cagata?
    No, perché?
    Meglio se è una classe che eredita da Form.

    minotaurus7 ha scritto:


    Se no, come faccio a far passare i nuovi dati al Form principale?
    Esponi le informazioni dalla finestra di dialogo che hai creato come proprietà.

    minotaurus7 ha scritto:


    Riesco a Chiamare la DialogBox dal Form principale, ma non riesco a fargli ripassare i dati aggiornati al Form padre.
    Se non pubblichi il codice, non possiamo aiutarti a capire dov'è l'errore.

    Ciao!
  • Re: Domanda sulle messagebox

    Buongiorno e grazie...
    vi scrivo quello che ho fatto:

    Dal Form padre richiamo la DialogBox in questo modo
    
    private void ListView1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                  MyDialogBox Dialog = new MyDialogBox();
                  Dialog.ShowMyDialogBox();
            }
    
    ed ora quello della DialogBox dove voglio richiamare una Funzione per fargli eseguire un "UPDATE" sul DB
    
    if (testDialog.DialogResult == DialogResult.OK)
                {
                    Aggiornamento_DB altroForm = new Aggiornamento_DB();
                    altroForm.Agg_lista1();
                    testDialog.Dispose();
                    return;
                }
    
    Non ho nessun errore ma non fa niente. Sembra che non richiamo la Funzione sul Form padre...
    Grazie e buona giornata.
  • Re: Domanda sulle messagebox

    Scusate.... mi son dimenticato di scrivere la Classe del Form padre che vorrei richiamare:
    
    public class Aggiornamento_DB : MyDialogBox
        {
            public void Agg_lista1()
            {
                ......
                ........
            }
        }
    
  • Re: Domanda sulle messagebox

    minotaurus7 ha scritto:


    Dal Form padre richiamo la DialogBox in questo modo
    Strano che venga creata un'altra finestra da visualizzare partendo da un click della ListView, ma che a questa finestra secondaria non venga passato alcun parametro, ad esempio un riferimento all'elemento selezionato.

    Qual è il ruolo della ListView?

    minotaurus7 ha scritto:


    ed ora quello della DialogBox dove voglio richiamare una Funzione per fargli eseguire un "UPDATE" sul DB [...]
    Innanzitutto, trovo errato creare una finestra per fare un aggiornamento del DB: le classi dovrebbero seguire il principio di responsabilità singola, ovvero dovrebbero esserci classi per lavorare con il database, classi per governare controlli e finestre, ecc. In questo senso, creare un Form per manipolare i dati è già una contraddizione in termini di questo principio.

    Inoltre, se il codice riportato è quello della Dialog, che cos'è allora testDialog? Quante dialog abbiamo?

    Inoltre, è presente un
    Aggiornamento_DB altroForm = new Aggiornamento_DB();
    Di che cosa si tratta? E' un'altra finestra?

    Io ho considerato un Form principale e una Dialog, mentre qui sembrano esserci due o tre Dialog e almeno due Form.

    minotaurus7 ha scritto:


    Non ho nessun errore ma non fa niente. Sembra che non richiamo la Funzione sul Form padre...
    Al netto delle considerazioni già fatte, che evidenziano una certa "confusione architetturale", si dovrebbe anche fare il debugging dell'applicazione, mettendo dei punti di interruzione (breakpoint) dove fermarsi e controllare quello che sta avvenendo, il valore che hanno le variabili, ecc.

    Ciao!
  • Re: Domanda sulle messagebox

    Grazie Alka per la risposta tempestiva.

    Ti anticipo che sono solo un appassionato e quindi autodidatta, quindi penso che si, sicuramente è scritto in modo confusionario. Soprattutto per te che sei un programmatore esperto.
    Cerco di spiegarmi meglio:

    Il doppio click sull'item della ListView è per selezionare la riga da aggiornare e richiamare la DialogBox.
    Dalla DialogBox personalizzata con tre pulsanti faccio una scelta.
    In base alla scelta che faccio sulla DialogBox, aggiorno il DB e la ListView. Ma non succede nulla. Non ho parametri da passare, ma solo in base al pulsante cliccato deve comportarsi in un modo o nell'altro... e questo è l'unico modo che son riuscito a capire(che sicuramente è sbagliato )
    La MyDialogBox è la Classe, la testDialog è il nome della form che mi si apre quando la richiamo.
    Inoltre, è presente un
    Aggiornamento_DB altroForm = new Aggiornamento_DB();
    Di che cosa si tratta? E' un'altra finestra?
    si tratta del Form principale ed ho provato a passargli la scelta in questo modo, perchè non mi da errore.
    Perdona la confusione, ma come ti ho già detto sopra sono un autodidatta e nessuno mi ha spiegato nulla. Cerco solo di capire meglio per soddisfare questa mia passione.
    Grazie ancora per l'interessamento.
  • Re: Domanda sulle messagebox

    Credo ci sia un po' di confusione nella struttura del programma, per cui poi diventa più difficile fare tutto (per quanto paradossale).

    Per esempio, guardando il tuo codice, sembra che il flusso sia questo:
    • Carichi una Form con la tua lista
    • Al click sulla lista apri una nuova form senza passare nulla
    • Nella nuova finestra vorresti chiamare i metodi delle finestra padre per fare gli agg.ti
    Peccato che così fai molta fatica. Per esempio vedo che nella form di dettaglio non passi nulla (nemmeno la form padre) e quando devi aggiornare i dati a video crei una nuova istanza della form padre (Aggiornamento_DB altroForm = new AggiornamentoDB(); )

    Così facendo, però, non stai lavorando con la form padre ma con una nuova istanza della stessa classe, per cui è corretto che a video non si veda nulla (sono due istanze diverse, ognuna con la propria lista... Tu aggiorni quella della nuova form, ma la vecchia resta com'è)

    Purtroppo è un errore classico di chi si avvicina al codice semplicemente "provando" e senza studiare bene prima il paradigma ad oggetti.
  • Re: Domanda sulle messagebox

    C'è molto materiale in rete , anche qualche testo gratuito da cui iniziare :

    https://antoniopelleriti.it/wp-content/uploads/2019/11/ABCsharp-guida-alla-programmazione-in-csharp-8.pdf ,
    https://introprogramming.info/english-intro-csharp-book/read-online/

    per trovare un riferimento ad un form già aperto puoi utilizzare Application.OpenForms https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.application.openforms?view=windowsdesktop-7.0

    in ogni caso con 40-50 euro ti puoi comprare un manuale aggiornato ,
Devi accedere o registrarti per scrivere nel forum
9 risposte