Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - Ma che succede?
Forum - C# / VB.NET - Ma che succede?

Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Segnala al moderatore
Postato alle 22:48
Venerdì, 07/01/2011
Scusate ma non so nemmeno che titolo mettere, il problema è il seguente
avendo la necessità di far prendere all'ultima colonna di una listview tutto lo spazio rimasto ho implementato una ExtendedListView che quando disegna le colonne chiama questo metodo,

Codice sorgente - presumibilmente VB.NET

  1. Public Sub FillLastColumn()
  2.             If Me.View IsNot Nothing Then
  3.                 If TypeOf Me.View Is GridView Then
  4.                     Dim gv As GridView = Me.View
  5.                     Dim gvccw As Double
  6.                     'somma la larghezza effettiva di tutte le colonne tranne l'ultima
  7.                     '---> qua la Messagebox
  8.                     For i = 0 To gv.Columns.Count - 2
  9.                          '---> o qua dentro
  10.                          gvccw += gv.Columns(i).ActualWidth
  11.                     Next
  12.                     'e la sottrae alla larghezza effettiva della listview
  13.                     Dim fcw As Double = (Me.ActualWidth - gvccw) - 6 'il 6 sarebbe il bordo della barretta che permette il resizing della colonna
  14.                     If fcw >= 0 Then
  15.                         gv.Columns.Last.Width = fcw
  16.                     Else
  17.                         gv.Columns.Last.Width = 0
  18.                         gv.Columns.Last.Width = Double.NaN
  19.                     End If
  20.                 End If
  21.             End If
  22.         End Sub



il problema è che il risultato cercato lo ottengo solo se inserisco
Codice sorgente - presumibilmente Plain Text

  1. Messagebox.Show("faccio apparire una mb")


dove ho messo i commenti (non ho provato a metterla in altri punti del codice...)

cioè se creo una sorta di pausa (credo)

potreste aiutarmi a capire perchè? E' tutto il giorno che sbatto la testa sul portatile

grazie in anticipo :k:

Ultima modifica effettuata da dedalux il 07/01/2011 alle 22:53


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 2:09
Sabato, 08/01/2011

probabilmente perchè, quando viene chiamata FillLastColumn, il controllo non ha ancora creato le colonne, oppure non le ha ancora inizializzate.

quella procedura va chiamata dopo che il controllo è stato completamente inizializzato, e per questo c'è un evento apposta.


Ingegnere Informatico
https://ldlagency.it
PM
Avatar
dedalux (Normal User)
Pro


Messaggi: 155
Iscritto: 14/02/2009

Up
-1
Down
V
Segnala al moderatore
Postato alle 13:08
Sabato, 08/01/2011
:0 credevo che OnInitialized venisse generato solo alla creazione del controllo

comunque avendo anche altre funzionalità che si intrecciano, ho dovuto optare per un UpdateLayaout(), solo che come performance fa schifo.

Per fortuna su internet ho trovato un progetto molto carino che implementa una ListView con diverse funzionalità, sfruttando anche le attached properties.
Solo che è scritto in C# che non conosco benissimo, e mi manca ancora da tradurre qualche parte.

Quando ho finito caso mai, se qualcuno mi sistema l'account che anche se sono membro non posso caricare nulla, carico il controllo sul sito.

=)

Ultima modifica effettuata da dedalux il 08/01/2011 alle 13:09
esistono traduttori di codice c# vb.net: http://converter.telerik.com/ - HeDo - 08/01/11 13:38


«La disumanità del computer sta nel fatto che, una volta programmato e messo in funzione, si comporta in maniera perfettamente onesta.»

Isaac Asimov
PM