Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446

    [C#]rettangoli di selezione di un componente

    ho fatto in modo che ogni volta che clicco sul mio componente mi compaiono i "rettangolini di selezione" (per capirci, quelli che ad esempio compaiono quando seleziono un'immagine o una clip art su word).
    Il mio problema è che quando inserisco un altro componente (questo accade se c'è l'evento di drag&drop) e ci clicco sopra mi rimane la selezione anche su quello precedente e vorrei che questo non accadesse più.
    Ora mi basterebbe settare una proprità su false perchè non mi disegni i rettangolini, solo che non so come fare a descrivere l'evento clic su un altro componente o cmq qualcosa di simile.

  2. #2
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539

    Re: [C#]rettangoli di selezione di un componente

    Originariamente inviato da 83kiara83
    ho fatto in modo che ogni volta che clicco sul mio componente mi compaiono i "rettangolini di selezione" (per capirci, quelli che ad esempio compaiono quando seleziono un'immagine o una clip art su word).
    Il mio problema è che quando inserisco un altro componente (questo accade se c'è l'evento di drag&drop) e ci clicco sopra mi rimane la selezione anche su quello precedente e vorrei che questo non accadesse più.
    Ora mi basterebbe settare una proprità su false perchè non mi disegni i rettangolini, solo che non so come fare a descrivere l'evento clic su un altro componente o cmq qualcosa di simile.

    bisognerebbe vedere come hai gestito tu il cod., comunque in linea di massima potresti o implementare un sistema di eventi collegati ad un delegato, oppure sfruttare qualche campo statico che indica su quale selezione sei.


  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446
    potresti o implementare un sistema di eventi collegati ad un delegato, oppure sfruttare qualche campo statico che indica su quale selezione sei.

    e cioè???

  4. #4
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    codice:
    //dichiaro un delegato che accetta come parametro un int;
    public delegate void SelectChangeEventHandler(int selection);
    
    class componente1 
    {
          
          public static SelectChangeEventHandler SelectChangeDelegate = null;
          
          public static event SelectChangeEventHandler SelectChangeEvent
                    {
                        add
                        {
                            SelectChangeDelegate += value;
                        }
                        remove
                        {
                            SelectChangeDelegate -= value;
                        }
                    }
    
         private void OnChangeSel(int numSel)
         {
               // altra implementazione
    
              if (SelectChangeDelegate != null)
                        {
                            SelectChangeDelegate(numSel);
                        }
         }
    }
    
    class componente2
    {
         public coimponente2()
         {
             componente1.SelectChangeEvent += new SelectChangeEventHandler(SelChange);
         }
    
         public void SelChange(int numSel)
         {
                //cambio la selezione
         }
    }
    un qualcosa del genere

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446
    Ma i miei componenti fanno parte della stessa classe. Non ho un component class 1 e component class 2

  6. #6
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Originariamente inviato da 83kiara83
    Ma i miei componenti fanno parte della stessa classe. Non ho un component class 1 e component class 2
    te l'ho detto, dipende da come hai gestito il cod. tu.
    Comunque in alcuni casi e conveniente ereditare il componente ed aggiungere cio' che ti serve.
    visto cosi' ti posso dare solo dei consigli concettuali (come voleva essere l'esempio postato prima), se poi sono due componenti della stessa classe diventa ancora piu' facile e diretta la comunicazione tra di loro...


    prova a postare qualche frazione di codice

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446
    Ho risolto facendolo ancora più semplice:

    codice:
    protected override void OnLostFocus(EventArgs e)
    		{
    			_editMode = false;
    			Invalidate();
    			base.OnLostFocus (e);
    		}
    
    		protected override void OnGotFocus(EventArgs e)
    		{
    			base.OnGotFocus (e);
    		}
    		protected override void OnClick(EventArgs e)
    		{
    			Focus();
    			base.OnClick (e);
    		}
    _editMode quando è su false non mi fa più disegnare i rettangolini
    Ma mi rimane un problema: vorrei che non si disegnassero più nemmeno quando clicco sul panel che ho sotto i miei componenti.
    Come faccio??

  8. #8
    Utente di HTML.it L'avatar di U235
    Registrato dal
    Mar 2006
    Messaggi
    1,539
    Originariamente inviato da 83kiara83
    Ho risolto facendolo ancora più semplice:

    codice:
    protected override void OnLostFocus(EventArgs e)
    		{
    			_editMode = false;
    			Invalidate();
    			base.OnLostFocus (e);
    		}
    
    		protected override void OnGotFocus(EventArgs e)
    		{
    			base.OnGotFocus (e);
    		}
    		protected override void OnClick(EventArgs e)
    		{
    			Focus();
    			base.OnClick (e);
    		}
    _editMode quando è su false non mi fa più disegnare i rettangolini
    Ma mi rimane un problema: vorrei che non si disegnassero più nemmeno quando clicco sul panel che ho sotto i miei componenti.
    Come faccio??

    visto cosi' non ti so aiutare.

    prova a fare un controllo sull' OnClick della derivata, se e quello che ti interessa lo passi alla base se no...

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446
    L'OnClick della derivata è già questo.
    Il problema sta nel chiamare il metodo OnClick per la base (il mio panel) e settare poi il mio _editMode a false.

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    446
    Se io ho che Class 2 è derivata da Class1, come a riferirmi all'interno di class 2 al click del mouse, o ad un altro evento, della Class1??
    E' possibile?

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.