2009-06-11 13 views
5

Il pannello di layout tabella in C# (.net 2.0) è molto primitivo. Volevo consentire ai miei utenti di ridimensionare le colonne in un pannello di layout di tabella, ma non ci sono opzioni pronte per farlo. C'è un modo per scoprire se il cursore è direttamente sopra i confini di una cella e, in tal caso, quale cella è sotto di essa? Potremmo avere questa informazione, possiamo almeno provare a ridimensionare quella riga/colonna attraverso il codice. Aiutami a trovare,Riquadro ridimensionabile del layout di tabella C#

  • se il cursore si trova direttamente sopra qualsiasi confini di una cella
  • quale cella è sotto di esso (applicabile solo se la prima domanda ha una risposta)

Molte grazie,

Sudarsan Srinivasan

+0

hey sudarsanyes hai mai risolto questo problema? Ora sto affrontando lo stesso problema. l'utente della mia app deve essere in grado di ridimensionare righe e colonne nella tabella della mia appLayoutPanel durante il runtime –

risposta

7

Se layout è non eccessivamente complesso, forse si può ottenere quello che vuoi utilizzando SplitContainer controlli? Purtroppo, ogni SplitContainer avrà solo due "celle", ma è possibile incorporare uno SplitContainer in un altro pannello SplitContiner per ottenere cellule più ridimensionabili:

┌──────────────────┐ 
│┌─────┬──────────┐│ 
││  │   ││ 
││  │   ││ 
│└─────┴──────────┘│ 
├──────────────────┤ 
│┌──────────┬─────┐│ 
││   │  ││ 
││   │  ││ 
│└──────────┴─────┘│ 
└──────────────────┘ 

OK, quindi arte ASCII non è mai stata una delle mie competenze più forti, ma io che si ottiene il punto; o)

+0

Non sarà molto complesso e costoso ?? [sei molto bravo nelle arti ASCII di me: D] – sudarsanyes

+0

Brutto, sì, ma considerevolmente meno complesso e costoso che provo a gestire gli eventi in un pannello di layout di tabella, direi. – Benjol

+0

Questa è la soluzione che uso, ma non penso che esista un modo (semplice) per forzare il mantenimento della vista tabulare, poiché nel momento in cui l'utente ridimensiona un contenitore di divisione interno, non è sincronizzato con gli altri contenitori di divisione in il tuo tavolo Forse con gestori di eventi di codifica. – tsemer

0

Basandosi sulla cima della @Fredrik Mörk's solution:

Dopo l'incorporamento un'altra SplitContainer (s), l'unico inconveniente è che non si ridimensionano automaticamente insieme, in modo da perdere rapidamente la visualizzazione tabellare . Una soluzione potrebbe essere l'istituzione di un gestore di eventi per ogni SplitterMoved SplitContainer applicabile:

private void mySplitContainer_SplitterMoved(object sender, SplitterEventArgs e) { 
    mOtherySplitContainer.SplitterDistance = e.SplitX; 
} 

Se lo SplitContainer è l'impiego orizzontale e.SplitX, se si tratta di utilizzo verticale e.SplitY.

Problemi correlati