DevAdmin Blog

Blog di Ermanno Goletto (Microsoft MVP Directory Services - MCITP - MCTS - MCSA - MCP)
posts - 887, comments - 447, trackbacks - 13

My Links

News

Avatar

Curriculum Vitae

Visualizza il profilo di Ermanno Goletto su LinkedIn


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Logo SysAdmin.it SysAdmin.it Staff


Logo TechNet Forum TechNet Italia @ForumTechNetIt Follow TechNet Forum on Twitter


Logo MVP


Ermanno Goletto Follow ermannog on Twitter

Article Categories

Archives

Post Categories

Blogs

Friends

Knowledge Base

MVP Sites

Resources

Persistere il valori di una proprietà custom di una DataGridViewColumn custom

Dovendo realizzare una DataGridViewColumn di tipo MaskedTextBox e NumericUpDown ho fatto un salto su Msdn dove ho trovato questo esempio per colonne MaskedTextBox:

DataGridView Custom Column Sample 
http://msdn2.microsoft.com/en-us/library/ms180996.aspx

tutto bene ma quando da IDE di tenta di impostare le proprietà custom il valore non viene memorizzato.

Dopo aver letto questo thread su Microsoft Connect:
DataGridView Column Editor code generation issue
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=108961
stavo quasi per considerarlo un bug, ma ne ero veramente poco convinto, infatti sulle colonne native del framework non ci sono problemi.

Poi ho provato questo esempio:
Sviluppo di una cella e colonna NumericUpDown personalizzate per il controllo DataGridView
http://www.microsoft.com/italy/msdn/library/framework/winf_numericupdown.mspx
e qui il problema non si presentava e dopo aver confrontato il codice e fatto vari tentativi ho capito che la soluzione stava nell'implementare il metodo Clone nella DataGridViewTextBoxCell custom.

Public Overrides Function Clone() As Object
  Dim dataGridViewCell As MyDataGridViewNumericUpDownCell = CType(MyBase.Clone, MyDataGridViewNumericUpDownCell)
  If (Not (dataGridViewCell) Is Nothing) Then
    dataGridViewCell.DecimalPlaces = Me.decimalPlacesValue
    dataGridViewCell.Increment = Me.incrementValue
    dataGridViewCell.Maximum = Me.maximumValue
    dataGridViewCell.Minimum = Me.minimumValue
    dataGridViewCell.ThousandsSeparator = Me.thousandsSeparatorValue
  End If
  Return dataGridViewCell
End Function

Senza questo metodo le proprietà della colonna DecimalPlaces, Increment, Maximum, Minimum, ThousandsSeparator non vengono memorizzare se modificate da IDE.

Secondo me vedendo vari esempi in rete di implementazione di colonne custom si fatto un passo avanti rispetto al DataGrid, ma non è ancora una passeggiata realizzare delle buone column custom, insomma guardando l'implementazione del secondo link si vede che il codice da scrivere è una vagonata e in alcuni casi si fa uso di API.
Morale c'è sempre la sensazione di avere fatto una column che si può dare per buona solo sulla base dei test effettuati e se la si deve modificare si spera di non introdurre nuovi bug.

Credo che oltre agli esempi servirebbero linee guida a cui attenersi rigorosamente per la creazione di Column custom (cosa implementare e sopratutto perchè).

Print | posted on Thursday, October 12, 2006 12:08 PM | Filed Under [ Code, Snippets & Scripts .NET ]

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 8 and 7 and type the answer here:

Powered by:
Powered By Subtext Powered By ASP.NET