Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

DataGridView text l Alignment

554 views
Skip to first unread message

John

unread,
Dec 26, 2011, 12:13:48 PM12/26/11
to
Salve,

nonostante abbia specificato nelle property l'allineamento
'Middleright', sia per i titoli, sia per tutte le celle, i titoli
rimangono allineati in centro.

Da cosa potrebbe dipendere ?

Grazie.

Roberto

unread,
Dec 27, 2011, 10:45:31 AM12/27/11
to
potrebbe dipendere dal fatto che viene riserveto dello spazio a destra e che
di conseguenza non allinea correttamente la scritta.

se non ti interessa ordinare i dati
puoi impostare le colonne cosě:
DataGridView1.Columns(0..n-1).SortMode =
System.Windows.Forms.DataGridViewColumnSortMode.NotSortable

hth
bye
roberto

John

unread,
Dec 27, 2011, 8:14:49 PM12/27/11
to
Am 27.12.2011 16:45, schrieb Roberto:
> potrebbe dipendere dal fatto che viene riserveto dello spazio a destra e che
> di conseguenza non allinea correttamente la scritta.
>
> se non ti interessa ordinare i dati
> puoi impostare le colonne cosě:
> DataGridView1.Columns(0..n-1).SortMode =
> System.Windows.Forms.DataGridViewColumnSortMode.NotSortable
>

ho eseguito la modifica come da suggerimeno, ma non č cambiato niente :
i titoli restano allineati a sinistra mentre le colonne sono allineate a
destra, (come devono).

Comunque grazie del suggerimento.

Wodka40°

unread,
Dec 28, 2011, 3:59:27 AM12/28/11
to
John ha usato la sua tastiera per scrivere :
Prima di postare ho provato il codice ...funziona!
..zac..
'aggancio il tutto
dataAdapter = New OleDb.OleDbDataAdapter(Query,
StringaConnessione)
'riempio la tabella
dataAdapter.Fill(dt)
'la mostro nella griglia
GrigliaDati.DataSource = dt
'format dati
With GrigliaDati
.Columns(0).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.TopLeft
.Columns(1).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleCenter
.Columns(3).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.BottomRight
.Columns(1).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight

End With
..zac..

Ovviamente (lo saprai ma è meglio ripeterlo per i niubbi) un
allineamento MiddleCenter se la riga non è "alta" apparirà come un
normale "center"!

--
----- Italliaaaaa 3227! -----
Pasquà...Pasquale Zagaria...u'fighh'Riccard
[Vieni avanti cretino (1982)
c'ho pure il video! http://www.martek.it/public/dblog/banfi1.swf ]


Wodka40°

unread,
Dec 28, 2011, 4:01:08 AM12/28/11
to
Wodka40° ha spiegato il 28/12/2011 :
> John ha usato la sua tastiera per scrivere :
zac
ovviamente l'index delle colonne sono: 0 1 2 3 ...la fretta! :-)

--
----- Italliaaaaa 3227! -----
Era Cecco, il figlio del fornaio; era un orribile butterato napoletano,
col culo molto basso ed un alito agghiacciante tipo fogna di Calcutta.
(Fantozzi)


Gulp®

unread,
Dec 28, 2011, 4:12:06 AM12/28/11
to
Il 27/12/11 16.45, Roberto ha scritto:
> John wrote:
>> rimangono allineati in centro.

Prova da codice nell'Evento Form_Load
DataGridViewTua.GridArticoli.ColumnHeadersDefaultCellStyle.Alignment......

--
Gulp®

Gulp®

unread,
Dec 28, 2011, 4:26:43 AM12/28/11
to
Il 28/12/11 9.59, Wodka40° ha scritto:

Semplice corto e lineare, come fosse VB6.
Per fortuna esiste Il Copy - Paste!!

--
Gulp®

Roberto

unread,
Dec 28, 2011, 10:46:51 AM12/28/11
to
John wrote:

> Am 27.12.2011 16:45, schrieb Roberto:
>> potrebbe dipendere dal fatto che viene riserveto dello spazio a destra e
>> che di conseguenza non allinea correttamente la scritta.
>>
>> se non ti interessa ordinare i dati
>> puoi impostare le colonne così:
>> DataGridView1.Columns(0..n-1).SortMode =
>> System.Windows.Forms.DataGridViewColumnSortMode.NotSortable
>>
>
> ho eseguito la modifica come da suggerimeno, ma non è cambiato niente :
> i titoli restano allineati a sinistra mentre le colonne sono allineate a
> destra, (come devono).
>
> Comunque grazie del suggerimento.

scusa ma non sono stato preciso, oltre all'impostazione che ti ho scritto
prima, è necessario
A) impostare l'allineamento Default dei titoli delle colonne
nel seguente modo:
DataGridView1.ColumnHeadersDefaultCellStyle.Alignment =
DataGridViewContentAlignment.TopRight

B) impostare singolarmente quelle colonne che devono differire dal default
DataGridView1.Columns(1).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.TopCenter

questo serve perché l'allineamento del titolo è diverso da quello della
cella.

hth
bye
roberto

John

unread,
Dec 28, 2011, 2:23:05 PM12/28/11
to
Am 28.12.2011 09:59, schrieb Wodka40°:

> Ovviamente (lo saprai ma è meglio ripeterlo per i niubbi) un
> allineamento MiddleCenter se la riga non è "alta" apparirà come un
> normale "center"!
>

grazie di tutto l'esempio.
Ma il problema è inspiegabilmente più oscuro di quello che dovrebbe essere :

oltre ad aver messo il tuo esempio, (poi tolto perchè dava lo stesso
errore), anche un semplice statement come questo :

DGV1.Columns(0).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.MiddleRight

mi da errore : index out of range.

Non riesco a spiegarmi la cosa. Ho provato i tutte le varianti e quello
che disturba sembra essere l'indirizzamento della colonna.
Anche se faccio Columns("ID") che é il titolo della colonna, mi dá errore.

Paperino

unread,
Dec 28, 2011, 5:17:22 PM12/28/11
to
John ha scritto:
> schrieb Wodka40ᅵ:
>> Ovviamente (lo saprai ma ᅵ meglio ripeterlo per i niubbi)
>> un allineamento MiddleCenter se la riga non ᅵ "alta" apparirᅵ
>> come un normale "center"!
> grazie di tutto l'esempio.
> Ma il problema ᅵ inspiegabilmente piᅵ oscuro di quello che dovrebbe
> essere :
> oltre ad aver messo il tuo esempio, (poi tolto perchᅵ dava lo stesso
> errore), anche un semplice statement come questo :
> DGV1.Columns(0).HeaderCell.Style.Alignment =
> DataGridViewContentAlignment.MiddleRight
> mi da errore : index out of range.
> Non riesco a spiegarmi la cosa. Ho provato i tutte le varianti e quello
> che disturba sembra essere l'indirizzamento della colonna.
> Anche se faccio Columns("ID") che ᅵ il titolo della colonna, mi dᅵ errore.

Quando lo fai la griglia deve giᅵ avere almeno una colonna.
Sei sicuro che sia cosᅵ ?
Prova ad aggiungere una colonna e vedi che succede:

DGV1.ColumnCount = 1 ' crea almeno una colonna, poi prova
' a settare l'allineamento.
DGV1.Columns(0).HeaderCell.Style.Alignment = _
DataGridViewContentAlignment.MiddleRight

Detto questo, anch'io ho problemi con l'allineamento degli
header. Cerco di spiegarmi.
Se un header multilinea ha due o tre parole, e io setto
l'allineamento MiddleCenter, le due o tre righe vengono
correttamente allineate fra di loro, ma l'intero blocco
ᅵ allineato a sinistra, anzichᅵ centrato nella cella.
Provo a simulare, usate un font fisso:
----------------------------------------------------
| io | invece | le righe |
| lo | lo | sono |
| vorrei | vedo | accostate |
| vedere | cosᅵ | a sx |
| cosᅵ |purtroppo | ma centrate |
| | | fra di loro |
----------------------------------------------------

Bye, G.

John

unread,
Dec 28, 2011, 6:05:58 PM12/28/11
to
Am 28.12.2011 23:17, schrieb Paperino:

> Quando lo fai la griglia deve già avere almeno una colonna.
> Sei sicuro che sia così ?
> Prova ad aggiungere una colonna e vedi che succede:
>

La griglia ha sei colonne. E' molto semplice, è una
tabella semplice : 6 colonne e 4 righe (oltre il titolo).
E' anche read-only.
Ha solamente carattere consultorio e non deve essere aggiornata.

Fa parte di un .mdb creato con Access. E' la prima tabella che ho
creato. Doveva essere la prima di 20 tabelle.
E' di una semplicitá disarmante !

Ma quando arriva il 'diavoletto menagrano' si attacca a qualsiasi cosa
pur di rompere il cazzo in modo 'oscuro'.

Penso che a questo punto chiamerò veramente un esorcista !!!

Oggi con python sono riuscito a risolvere un problema molto più
complesso di questo, e in pochi minuti.
Perchè con Visual Basic devo sempre avere 'sti cazzo di *problemi
oscuri* stile 'Omen'.
Ma vaffan.....

Mattuguarda se devo sempre combattere contro i fantasmi ogni volta che
tocco il Visual basic !!!!


> Detto questo, anch'io ho problemi con l'allineamento degli
> header. Cerco di spiegarmi.
> Se un header multilinea ha due o tre parole, e io setto
> l'allineamento MiddleCenter, le due o tre righe vengono
> correttamente allineate fra di loro, ma l'intero blocco
> è allineato a sinistra, anziché centrato nella cella.
> Provo a simulare, usate un font fisso:
> ----------------------------------------------------
> | io | invece | le righe |
> | lo | lo | sono |
> | vorrei | vedo | accostate |
> | vedere | così | a sx |
> | così |purtroppo | ma centrate |
> | | | fra di loro |
> ----------------------------------------------------
>
> Bye, G.

Se fosse possibile, allegherei un .jpg della schermata.
E' una cosa scema, veramente. Una cazzatella che non dovrebbe dare
nessun problema.
Non uso niente di speciale.

Questo è il codice completo del progetto :


Imports System.Data
Imports System.Data.OleDb

Public Class fMMSE
Dim DAD As OleDb.OleDbDataAdapter
Dim DTAB As New DataTable

Dim CONNSTR As String = "provider=Microsoft.jet.OLEDB.4.0;Data
Source=""MMSE.mdb"""



Private Sub fMMSE_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load




DGV1.Top = 0
DGV1.Left = 0
DGV1.Width = Me.Width
DGV1.Height = Me.Height

DGV1.Columns(0).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.MiddleRight
DGV1.Columns(1).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.MiddleRight




DAD = New OleDb.OleDbDataAdapter("select * from MMSE", CONNSTR)
DAD.Fill(DTAB)
DGV1.DataSource = DTAB


End Sub

End Class

risultato : tutto OK solo che i titoli sono allineati a sinistra, e il
resto tutto allineato a destra.
Oltretutto la ultima riga vuota è tanto antiestetica. Ma fosse solo
quello !!!

Penso che opterò per il PHP e MySQL e farò una soluzione intranet !!!

Intanto ha solo carattere 'consultorio'.

Grazie comunque a tutti per i suggerimenti.

Paperino

unread,
Dec 28, 2011, 6:47:36 PM12/28/11
to
John ha scritto:

Prova a spostare queste due righe

> DGV1.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
> DGV1.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight

dopo la connessione al DB.

Bye, G.

John

unread,
Dec 28, 2011, 7:07:57 PM12/28/11
to
Fatto ! le ho messe subito dopo lo statement

DAD = New OleDb.OleDbDataAdapter("select * from MMSE", CONNSTR)

ma ho lo stesso errore :
----
Index was out of range. Must be non-negative and less than the size of
the collection.
Parameter name: index
-----

(PS - avevo messo solo queste due righe, per test, anche se poi
funziona lo dovrò fare per tutte le altre colonne.)

Paperino

unread,
Dec 28, 2011, 7:12:35 PM12/28/11
to
John ha scritto:
> schrieb Paperino:
>> John ha scritto:
>> Prova a spostare queste due righe
>>> DGV1.Columns(0).HeaderCell.Style.Alignment =
>>> DataGridViewContentAlignment.MiddleRight
>>> DGV1.Columns(1).HeaderCell.Style.Alignment =
>>> DataGridViewContentAlignment.MiddleRight
>> dopo la connessione al DB.
> Fatto
> ma ho lo stesso errore :
> Index was out of range. Must be non-negative and less than the size of
> the collection.
> Parameter name: index

Hai provato a metterci prima questa, come dicevo in altro post ?

DGV1.ColumnCount = 1

Bye, G.

Roberto

unread,
Dec 29, 2011, 3:29:28 AM12/29/11
to
prova a mettere le righe in questo ordine:

============
DAD = New OleDb.OleDbDataAdapter("select * from MMSE", CONNSTR)
DAD.Fill(DTAB)
'-------------------------
'la griglia non ha nessuna colonna fino a che non le imposti il DataSource
'-------------------------
DGV1.DataSource = DTAB
DGV1.Columns(0).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.MiddleRight
DGV1.Columns(1).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.MiddleRight
'-----------
'inoltre devi aggiungere queste righe
'-----------
DataGridView1.Columns(0).SortMode =
System.Windows.Forms.DataGridViewColumnSortMode.NotSortable
DataGridView1.Columns(1.SortMode =
System.Windows.Forms.DataGridViewColumnSortMode.NotSortable
============

HTH
bye
roberto

Wodka40°

unread,
Dec 29, 2011, 4:13:44 AM12/29/11
to
Correva il 29/12/2011 e rincorrendolo John scriveva:
zac
>
> Penso che opterò per il PHP e MySQL e farò una soluzione intranet !!!
Mille paroloni....php...python...mysql....
ma sotto sotto la tua assoluta solita incapacità...l'esempio che ti ho
postato fa parte dell'esempio che ti feci a suo tempo ed è
ASSOLUTAMENTE FUNZIONANTE!

...ci persi tempo a fartelo e pure a commentartelo....vedo che con te è
tutto tempo perso!!! Molto meglio andare al bar a bersi un caffè!
CMQ è passato Natale...spendo ancora del tempo per te nella speranza
che prima o poi in codesta zucca qualcosa entri oltre all'aria!

...e SOPRATUTTO per i newbie a cui DAVVERO INTERESSA....


Un esempio completo e funzionante:
il database è il classico northwind.mdb ...quello di access!
FW 4.0

FATEVI un nuovo progetto
Prendete una windows form....chiamatela JohnForm ...formattatela un po:
Aggiungete un combobox e chiamatelo cmbTabelle
Aggiungete un command button e chiamatelo Button1 e con testo "Recupera
dati"
Aggiungete una datagridview e chiamatela GrigliaDati io l'ho lasciata
tal quale l'ho solo allargata alla larghezza del form...non lho nemmeno
ancorata

Adesso il codice da copia-incollare

Imports System.Data.OleDb 'almeno ci attacchi quello che vuoi! Da
Access a Mysql a Excel


Imports System.Drawing 'per giocare con la datagridview!


Public Class JohnForm

'QUESTE VARIABILI LE VEDI IN TUTTA LA CLASSE
Private dataAdapter As OleDbDataAdapter 'per ORA NON HO istanziato
nulla....ho solo riservato una prenotazione del posto al compilatore
Private StringaConnessione As String =
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=""C:\lavorivbnet\database\Nwind.mdb"" "
Private Query As String = ""


Private Sub JohnForm_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'un po di config
'metto nel combobox il nome delle tabelle
With Me.cmbTabelle
.Items.Clear()
.Items.Add("Customers")
.Items.Add("Employees")
.Items.Add("Products")
.Items.Add("Shippers")
.Items.Add("Suppliers")
.Items.Add("QUESTANONESISTE")
End With
' La Datagridview
With GrigliaDati
.AutoGenerateColumns = True
.AllowUserToDeleteRows = True
.AllowUserToDeleteRows = True
.AllowUserToOrderColumns = True
.AllowUserToResizeColumns = True
'aggancio la griglia alla form per renderla allargabile
.Anchor = AnchorStyles.Left Or AnchorStyles.Right Or
AnchorStyles.Bottom


End With
Button1.Text = "Recupera dati"
End Sub

'UN BOTTONE PER SCATENARE TUTTO

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
'mi faccio la query
Query = "SELECT * FROM " + Me.cmbTabelle.SelectedItem.ToString
'ed ora?
'Ora devo avere un contenitore per parcheggiare i dati che
recupero dal database...una dataTable è perfetta!
Dim dt As New DataTable

Try
'aggancio il tutto
dataAdapter = New OleDb.OleDbDataAdapter(Query,
StringaConnessione)
'riempio la tabella
dataAdapter.Fill(dt)
'la mostro nella griglia
GrigliaDati.DataSource = dt
'format dati
formatGriglia(GrigliaDati)



Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

End Sub
Private Sub formatGriglia(nomegriglia As DataGridView)
With nomegriglia


.ColumnHeadersBorderStyle =
DataGridViewHeaderBorderStyle.Single
.ColumnHeadersDefaultCellStyle.Alignment =
DataGridViewContentAlignment.BottomCenter
.ColumnHeadersDefaultCellStyle.Font = New Font("Courier",
10, FontStyle.Bold, GraphicsUnit.Point)
.ColumnHeadersDefaultCellStyle.ForeColor =
Color.DarkTurquoise
.ColumnHeadersHeight = 70
.ColumnHeadersHeightSizeMode =
DataGridViewColumnHeadersHeightSizeMode.DisableResizing

For n As Integer = 0 To .Columns.Count - 1
'faccio questo perchè non so se ci sono colonne!
Select Case n
Case 0
'prima colonna
.Columns(0).DefaultCellStyle.ForeColor =
Color.WhiteSmoke
.Columns(0).DefaultCellStyle.Font = New
Font("Arial", 8, FontStyle.Regular, GraphicsUnit.Point)
.Columns(0).DefaultCellStyle.BackColor =
Color.DarkSlateBlue
.Columns(0).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleLeft
.Columns(0).Width = 120
.Columns(0).MinimumWidth = 90
Case 1
'seconda colonna
.Columns(1).DefaultCellStyle.ForeColor =
Color.DarkBlue
.Columns(1).DefaultCellStyle.Font = New
Font("Arial", 8, FontStyle.Regular, GraphicsUnit.Point)
.Columns(1).DefaultCellStyle.BackColor =
Color.YellowGreen
.Columns(1).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight
.Columns(1).Width = 220
.Columns(1).MinimumWidth = 100

Case Else
.Columns(n).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.BottomLeft

End Select
Next

End With
End Sub

Private Sub GrigliaDati_CellFormatting(sender As Object, e As
System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles
GrigliaDati.CellFormatting
'tanto per far vedere che c'è anche altro
If (e.RowIndex Mod 2) = 0 Then
'riga pari
If e.ColumnIndex >= 2 Then
'dalla terza colonna se c'è
e.CellStyle.BackColor = Color.LightGray
End If
Else
'riga dispari
If e.ColumnIndex >= 2 Then
'dalla terza colonna se c'è
e.CellStyle.BackColor = Color.LightSeaGreen
End If
End If
End Sub

Private Sub GrigliaDati_CellPainting(sender As Object, e As
System.Windows.Forms.DataGridViewCellPaintingEventArgs) Handles
GrigliaDati.CellPainting
'giocando con la datagridview
'ho una icona nelle risorse
'la metto nella prima cella dell'header
If e.RowIndex = -1 And e.ColumnIndex = 1 Then
'sono nella prima cella dell'header
Dim img As Image = My.Resources.persona1.ToBitmap
e.Paint(e.CellBounds, DataGridViewPaintParts.All &
DataGridViewPaintParts.ContentForeground)
e.Graphics.DrawImage(img, New Point(e.CellBounds.X,
e.CellBounds.Y))
e.Handled = True
End If
End Sub

End Class


Cosa manca?
Andate nelel proprietà del progetto...c'è una linguetta ..."RISORSE"
in alto un combobox...scegliete "ICONE" ....accanto "Aggiungi risorsa"
click sulla freccia in giù.... scegliere "aggiungi file esistente"
trovate una icona nel vostro harddisk e caricatela nelle risorse...poi
per non far fallire il codice chiamatela: persona1

....tutto perfettibile....ma molto didattico!!!
Ovviamente per essere didattico...ci vuole un tutor...ed un allievo!
Se l'allievo si crede tutor...si va da poche parti!
...chi vuol capire....
Saluti !




p.s.
Il prossimo che dice che son buono solo a flammare e non a postare
soluzioni può automandarsi direttamente a fanculo da parte mia!

--
----- Italliaaaaa 3227! -----
Guerrieriii....giochiamo a fare la guerraaa!....
Guerrieriii....giochiamo a fare la guerraaa!....
Guerrieriii....giochiamo a fare la guerraaa!....

I guerrieri della notte (1987)


Wodka40°

unread,
Dec 29, 2011, 4:21:21 AM12/29/11
to
Wodka40° ha spiegato il 29/12/2011 :
> Correva il 29/12/2011 e rincorrendolo John scriveva:
e aggiungo ancora.....
compiti a casa:

1) adesso se allargo il form si allarga la griglia ma rimane ancorata
al fondo...se volessi anche allargarla per altezza?

2) se visualizzo 2 tabelle di seguito il paint dell'header per
sovraimporre l'icona mi "impasta" le scritte...andrebbe cancellato e
riscritto?...o cos'altro?

3) cambiare colore quando il puntatore passa su una cella???

:)

--
----- Italliaaaaa 3227! -----
Soldato Joker, cosa ci fa il soldato Palla di Lardo con quel fucile in
mano nel mio fottutissimo bagno?

Sergente Artman [ da: "Full Metal Jacket" ]


John

unread,
Dec 29, 2011, 5:25:46 AM12/29/11
to
Am 29.12.2011 09:29, schrieb Roberto:

>
> prova a mettere le righe in questo ordine:
>
> ============
> DAD = New OleDb.OleDbDataAdapter("select * from MMSE", CONNSTR)
> DAD.Fill(DTAB)
> '-------------------------
> 'la griglia non ha nessuna colonna fino a che non le imposti il DataSource
> '-------------------------
> DGV1.DataSource = DTAB
> DGV1.Columns(0).HeaderCell.Style.Alignment =
> DataGridViewContentAlignment.MiddleRight
> DGV1.Columns(1).HeaderCell.Style.Alignment =
> DataGridViewContentAlignment.MiddleRight
> '-----------
> 'inoltre devi aggiungere queste righe
> '-----------
> DataGridView1.Columns(0).SortMode =
> System.Windows.Forms.DataGridViewColumnSortMode.NotSortable
> DataGridView1.Columns(1.SortMode =
> System.Windows.Forms.DataGridViewColumnSortMode.NotSortable
> ============
>

Ho fatto esattamente cosě. Ora funziona perfettamente.
Grazie mille.


John

unread,
Dec 29, 2011, 5:54:36 AM12/29/11
to
Am 29.12.2011 10:13, schrieb Wodka40°:

To, chi si rivede. Piacere di rivederti ! Hai passato bene il Natale ?
Mi sa di no. Ti vedo così nervoso !

> Mille paroloni....php...python...mysql....

sono cose ottime ! Provale una buona volta !!

> ma sotto sotto la tua assoluta solita incapacità...l'esempio che ti ho
> postato fa parte dell'esempio che ti feci a suo tempo ed è ASSOLUTAMENTE
> FUNZIONANTE!
>
> ...ci persi tempo a fartelo e pure a commentartelo....vedo che con te è
> tutto tempo perso!!! Molto meglio andare al bar a bersi un caffè!
>

Ti ringrazio tantissimo per l'esempio ma non mi sembrava il caso di far
diventare un programmino di 10 righe un programmone di 150 righe, anche
se molto dotto ed esauriente !
Non è che se voglio spiaccicare un DataGridView di sei colonne per
quattro righe statiche, in read-only mode, su un Form devo andare a
scrivere esplicitamente TUTTI i parametri possibili e immaginabili
(checcazzocentra il sorting...mahh)...


CMQ è passato Natale...spendo ancora del tempo per te nella speranza che
> prima o poi in codesta zucca qualcosa entri oltre all'aria!
>

Carissimo, dimentinticatelo : io non sarò mai alla tua altezza ! Sono un
povero praticone che ha voglia di risolvere un problemino svelto svelto,
in cinque minuti, e faccio continuamente l'errore di rivolgermi al
Visual Basic, quando invece dovrei optare per il mio nuovo amore : il
Python, e se voglio che le cose le vedano tutti in rete, all'altro amore
(sono sempre stato poligamo, sai) il PHP e il MySQL.

Con quelli ho raramente i mal di testa che ho sempre avuto col VB . NET.

Ma ovviamente è colpa mia, non dico di no. Mi ero illuso di fare come
facevo ai tempi del VB6 : ogni volta che mi veniva uno sfizio di fare
qualcosa, ricorrevo SEMPRE e UNICAMENTE al Visual Basic. Ci
ho sempre fatto TUTTO. Mi veniva d'istinto. Come un pittore, mi venva
l'idea e avevo subito una camvas a dispoosizione e ci mettevo sopra gli
oggetti.

Ecco il fatto che potevo fare la stessa cosa con VB .NET mi ha ingannato.

Non cadete nella trappola, giovani amici newby !!

Non azzardatevi a trattare VB .NET come trattate un linguaggio di
script, xom python o zck, come potevate fare con VB 6.

Col VB .NET voi non sapete a cosa andate incontro : pensate di
spiaccicare un datagridview sul camvas, tanto per mostrare una tabella
che portrebbe stare benissimo in Excel, (come lo era la mia prima che mi
venisse la bella idea di trasportarla inVB .NET) ?
Scordatela ! Non sapete le insidie nascoste in un DatGridView !!

Scoprite che non basta spiaccicare la tabella, riempirla col dataFill e via.
Un cazzo. Dovete dargli seimla altri parametri, (sorting, etc) che
imparerete solamente andandovi a leggere altre seimila pagine di testi
sparsi qua e la ed esempi in rete.

Pensavate che in una DataGridView pieno di numeri, allineati ovviamente
a destra, perchè tutti cazzi di numeri DEVONO essere allineati a destra,
avessero allineati a destra anche i loro titoli (headings) ?
Scordatevelo. Le cose *ovvie* non sono mai assolutamente *ovvie* in VB. NET.

Ma non demordete. Con amore e pazienza e continui di esercizi e pratica,
forse dopo 15 anni arriverete a conoscere QUASI TUTTE le features
nascoste del VB .NET.
Dopotutto è tanto figo, e permette di spiaccicare gli oggentti sul
canvas, come faceva VB 6 !!

(e per fortuna non mi sono mai cimentato col WPF, senno' ci diventavo
completamente schizofrenico !!!


> ...e SOPRATUTTO per i newbie a cui DAVVERO INTERESSA....
>

A me è SEMBRE interessato davvero, ma non ho la vostra pazienza. Quall
no. :-))

> FATEVI un nuovo progetto


non fatelo. Andate a prendervi un caffè...


>
> Private Sub JohnForm_Load(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
> 'un po di config
> 'metto nel combobox il nome delle tabelle
> With Me.cmbTabelle
> .Items.Clear()
> .Items.Add("Customers")
> .Items.Add("Employees")
> .Items.Add("Products")
> .Items.Add("Shippers")
> .Items.Add("Suppliers")
> .Items.Add("QUESTANONESISTE")
> End With
> ' La Datagridview
> With GrigliaDati
> .AutoGenerateColumns = True
> .AllowUserToDeleteRows = True
> .AllowUserToDeleteRows = True
> .AllowUserToOrderColumns = True
> .AllowUserToResizeColumns = True
> 'aggancio la griglia alla form per renderla allargabile
> .Anchor = AnchorStyles.Left Or AnchorStyles.Right Or AnchorStyles.Bottom
>
>
Sveglia !!!che ci fate là addormentati ???
ve lo avevo detto di andarvi a prendere un caffè...

>
> p.s.
> Il prossimo che dice che son buono solo a flammare e non a postare
> soluzioni può automandarsi direttamente a fanculo da parte mia!
>

Sei buono e caro e nessuno è più simpatico di te !
E ti auguro di cuore (non scherzo) a te a tutti gli avventori di questo
NG di 'elite' un Felice Anno Nuovo.
E ovviamente ringrazio tutti per i suggerimenti (anche quelli che non
hanno funzionato).

E vorrete scusarmi se ogni tanto, solo preso dalla nostalgia, mi
avventurerò sul Visual basic, e ovviamente anche un piccolissimo
programmino scemo mi causerà bugs madornali, di avere compassione di me
ed aiutarmi, come avete sempre fatto.

Buon anno a tutti !

John.
Da trentanni NewBy di Visual Basic !!!

Wodka40°

unread,
Dec 29, 2011, 11:08:33 AM12/29/11
to
John scriveva il 29/12/2011 :
> Am 29.12.2011 10:13, schrieb Wodka40°:
>
Vorrei chiarire a TUTTI i newbie ed a quelli che seriamente (per
diletto o per lavoro) vorrebbero usare VB.net o un qualsiasi altro
prodotto dotNet....di saltare a piè pari le farneticazioni di questo
signore!

Stringi stringi .... l'errore che questo signore compiva era quello di
voler assegnare una proprietà ad un oggetto PRIMA CHE ESISTESSE!
Siccome solo Dio può compiere tali miracoli VB.net come qualsiasi altro
linguaggio serio segnalava l'errore al povero mortale!

Quello che ho postato è un esempio che mostra didatticamente cosa può
fare (in maniera incompleta ovvio) anche una datagridview.

Vorrei anche precisare non a John (chissenefrega) ma a chi legge fin
qui che per quanto non si usi mai e sempre meglio capire tutte le
potenzialità di un prodotto prima di dire che schifo! Un esempio:
sapere come usare il gps sul cellulare normalmente non serve...il
giorno che avete bisogno di usarlo la vostra conoscenza farà la
differenza!

Vorrei anche dirvi che le parole hanno un peso essendo l'informatica
una branca dell'ingegneria: possiamo parlare di "Plinto" oppure di
"coso in cemento che serve a far sta sù una colonna che ci poggia sopra
ficcato dentro il terreno"...usare il termione "plinto" fornisce una
informazione univoca, completa, ripetibile, verificabile!
Quindi allenatevi a parlare il gergo proprio del vostro linguaggio o
tecnica di programmazione che usate vi servirà a far chiarezza mentale
a voi stessi ed a chi vi legge!

Anche qui non fate come il signor john: fa un gran casino di
termini....
un meltig pot sbagliato di termini...forse li sente dire e li piazza
lì!
un esempio: Canvas in windows forms? Proprio sicuro? Normalmente no! Ci
sono solo barbatrucchi per usare un elemento WPF in windows forms!

Ed infine non vi fate abbagliare dalle sue farneticazioni...il dotNet è
semplice e veloce!

un esempio
Mostrare una tabella in una griglia
dim StringaConnessione As String =
"Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=""C:\lavorivbnet\database\Nwind.mdb"" "
dim Query As String = "SELECT * FROM miatabella"
Dim dt As New DataTable
Try
'aggancio il tutto
dataAdapter = New OleDb.OleDbDataAdapter(Query,
StringaConnessione)
'riempio la tabella
dataAdapter.Fill(dt)
'la mostro nella griglia
GrigliaDati.DataSource = dt
....
7 istruzioni!!!...ed il try è sostibuile da un using o da nulla
Ovviamente ...se voglio una icona nella cella...o una riga verde una
blu e una rossa...o 2 colonne blu e 3 rosse....ovviamente mi tocca
spippolare un po ...ma nulla di drammatico!

MA SE NON VOLETE SCRIVERE NEMMENO UNA RIGA DI CODICE...
nessun problema...ci sono altri ambienti di sviluppo(non
programmazione) totalmente visuali!
Access per dirne uno!


e l'assurdità del tizio si nota in....
al tizio garba il php....come fa a recuperare dei dati in php e
mostrarli dentro una griglia?
Quanto codice scrive? Siccome faccio anche lavori in php (non gliene va
bene una all'amico...)
'connessione
$conn=@mysql_connect($host,$utente,$password);
@mysql_select_db($db);
'query
$testosql='SELECT * FROM `miatabella` ';
$ret=@mysql_query($testosql,$conn);
while ($riga= mysql_fetch_assoc($ret))
{
....dati per la griglia!
....un guazzabuglio di
echo("<tr>");
echo("<td> {$riga['rec1']} </td>");
......
echo("</tr>");
}

L'ho fatta corta ho saltato i vari die per segnalare la non riuscita ed
il close finale!!!
...più un css per formattarlo un minimo visivamentei....con i casini di
rendering fra un browser e l'altro!!!...con agganciato Jquery se si
vuole metterci un minimo di interazione con l'utente! casomai anche
Ajax?!?!? IL TUTTO CONDITO da un ambiente di variabili SCARSAMENTE
tipizzate che ti portano se non stai attento a casini immani!!! ...ma
state scherzando vero? Mille volte meglio dotNet!!!

Insomma John si sta intestardendo a dir male di tutto l'ambiente Net
senza conoscerlo...a dir male di noi senza voler vedere gli aiuti
forniti...arroccato sulla sua assoluta posizione!
E' una posizione legittima (per
carità)..ma..talebana...a-scientifica...fideista..oserei dire
superstiziosa(in quanto espressione di una conclusione sbagliata
estrapolata da fatti realmente accaduti mal interpretati)...tutto
l'incontrario di quello che ci si aspetterebe da un laureando in
neuroscienze!!! Ma il mondo è un paradosso e c'è spazio per tutti!
Speriamo almeno che nel suo campo sia bravo !!!!!

E con questo....fine!

p.s.
Ma john?!?!...non dovevi andar via e pagare un ragazzo per fare il
lavoro???
Non hai trovato nessuno che ti sopporta a Genova???...cavolo se non
trovi un genovese che per soldi fa il lavoro vuol dire che sei proprio
tremendo!!!
:) Saluti!

--
----- Italliaaaaa 3227! -----
Verace o finta, è da temersi sempre pietà di plebe.
(Vittorio Alfieri)


Wodka40°

unread,
Dec 29, 2011, 11:23:28 AM12/29/11
to
Il caro John in un impeto grammaticale scriveva:
> Am 29.12.2011 10:13, schrieb Wodka40°:
zac
Piccolo hint per tutti:
La griglia la posso usare in 2 modi DATABOUND o UNBOUND....collegata o
scollegata dai dati.

Se la uso databound significa che prendo dei dati da una fonte...anche
da una collezione...o da una dataTable...e la do in pasto alla griglia!
La griglia mi guarda quante colonne ci sono in una riga e me le mostra!
QUINDI
Oggetto che fa da ponte tra la mia datTable e il database vero e
proprio
dataAdapter = New OleDb.OleDbDataAdapter(Query, StringaConnessione)

'riempio la tabella
dataAdapter.Fill(dt)
'la mostro nella griglia
GrigliaDati.DataSource = dt

3 Istruzioni...ovviamente la griglia "lavora da se" e vi fa vedere i
dati formattati STANDARD con le impostazioni di default!

John ADESSO vorrebbe interagire con la griglia! Ma non con la
griglia...con le colonne!!!!
ED E' OVVIO ANCHE AI BAMBINI che può farlo SOLO ORA che la griglia SA':
1) QUANTE RIGHE CI SONO (se ci sono)
2) QUANTE COLONNE CI SONO PER RIGA
...fino ad adesso non lo sapeva!!!Ne è logico che lo potesse sapere:
non c'era "agganciato" NULLA alla griglia!!!

Quindi EVENTUALI formattazioni sulle colonne o sulle righe son
disponibili adesso!
Perchè adesso un
GrigliaDati.Columns(7).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight

ha un senso!!! ...se la tabella che agganciate ha soltanto 3 colonne
questa affermazione PREVENTIVA non avrebbe senso! non esiste la
Columns(7) !!!
...ed è MA TU GUARDA l'errore che appariva a John!!!

--
----- Italliaaaaa 3227! -----

Wodka40°

unread,
Dec 29, 2011, 11:42:54 AM12/29/11
to
Il 28/12/2011, Paperino ha detto :

zac
Boh Paperino <sgrat> B-) <sgrat>!
una cosa del tipo
.ColumnHeadersBorderStyle =
DataGridViewHeaderBorderStyle.Single
.ColumnHeadersDefaultCellStyle.Alignment =
DataGridViewContentAlignment.BottomCenter
.ColumnHeadersDefaultCellStyle.Font = New Font("Courier",
10, FontStyle.Bold, GraphicsUnit.Point)
.ColumnHeadersDefaultCellStyle.ForeColor =
Color.DarkTurquoise
.ColumnHeadersHeight = 90
.ColumnHeadersHeightSizeMode =
DataGridViewColumnHeadersHeightSizeMode.DisableResizing

e poi un
.Columns(0).DefaultCellStyle.ForeColor = Color.WhiteSmoke
.Columns(0).DefaultCellStyle.Font = New
Font("Arial", 8, FontStyle.Regular, GraphicsUnit.Point)
.Columns(0).DefaultCellStyle.BackColor =
Color.DarkSlateBlue
.Columns(0).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleLeft
.Columns(0).Width = 120
.Columns(0).MinimumWidth = 90
.Columns(0).HeaderCell.Value = "io" + vbCrLf +
"lo" + vbCrLf + "vorrei" + vbCrLf + "vedere così"


ed un
Case Else
.Columns(n).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleCenter
.Columns(n).HeaderCell.Value = "io lo vorrei
vedere così 123 4567"

mi produce:
http://www.martek.it/immagini/griglia1.png

--
----- Italliaaaaa 3227! -----
Anche sul trono più alto del mondo, si sta seduti sul proprio culo.
( Michel de Montaigne )


John

unread,
Dec 29, 2011, 11:59:00 AM12/29/11
to
Am 29.12.2011 17:08, schrieb Wodka40°:

> p.s.
> Ma john?!?!...non dovevi andar via e pagare un ragazzo per fare il
> lavoro???
>

Nun te scaldà troppo dotto', e' Natale e dobbiamo tutti essere buoni e
pazienti.
I miei bisogni e i tuoi bisogni sono molto diversi. Quindi è ovvio che
parteggiamo per due chiese diverse.

> Non hai trovato nessuno che ti sopporta a Genova???...cavolo se non
> trovi un genovese che per soldi fa il lavoro vuol dire che sei proprio
> tremendo!!!

Il mio lavoro va a gonfie vele e il VB .NET cerco di usarlo il meno
possibile. Me la cavo benissimo con Python (ieri in pochi minuti mi sono
costruito uno script che mi crea automaticamente degli html cercando
informazioni da dei text files.
Se l'avessi fatto in VB .NET sarei ancora qui a sacramentare perchè
avrei errori perfino a leggere dei text file. Con la sfiga che ho io,
sarebbe senzaltro così.

> :) Saluti!

Saluti anchea te . E buon Anno !


Paperino

unread,
Dec 29, 2011, 2:24:38 PM12/29/11
to
Wodka40° ha scritto:
> Paperino ha detto :
> zac
> Boh Paperino <sgrat> B-) <sgrat>!
> una cosa del tipo
> .ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Single
> .ColumnHeadersDefaultCellStyle.Alignment =
> DataGridViewContentAlignment.BottomCenter
[CUT]
> mi produce:
> http://www.martek.it/immagini/griglia1.png

Okappa, il codice è il tuo; ho fatto quelle minime modifiche
giusto per farlo funzionare, e ho messo un .middlecenter
sull'header. E' tutto lì a fianco, comunque.
Il risultato è questo:

http://img39.imageshack.us/img39/1569/griglia.png

Come centratura non mi pare un granché, concordi ?
Se ridimensiono le colonne a mano riesco più o meno
ad aggiustarle, ma solo finché non va a capo in altro
modo, e il problema ritorna.

L'unica spiegazione che vedo per ora è che possa dipendere
dal fatto che io uso il tema classico, e W7, o .NET,
o quel che è il responsabile in questo caso, ragionano
bene solo coi temi più "grafici".

Bye, G.

Wodka40°

unread,
Dec 29, 2011, 3:33:26 PM12/29/11
to
Paperino ha pensato forte :
> Wodka40ᅵ ha scritto:
prova a far cosᅵ
Case Else
.Columns(n).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleCenter
.Columns(n).Width = 250
.Columns(n).MinimumWidth = 190
.Columns(n).HeaderCell.Value = "io lo vorrei
vedere cosᅵ 123 4567"
.Columns(n).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.MiddleCenter

risultato
http://www.martek.it/immagini/griglia2.jpg

Boh !!!
cmq per provare
http://www.martek.it/immagini/griglia2.jpg

mamma mia che brutto!...ma davvero ci sembrava bello qualche "era
informatica" fᅵ????

Mamma mia lo ricambio subito!
Saluti!

--
----- Italliaaaaa 3227! -----
Bisogna sempre dare spontaneamente quello che non si puᅵ impedire ti
venga tolto.
(Vittorio Alfieri)


Paperino

unread,
Dec 29, 2011, 3:42:07 PM12/29/11
to
Wodka40° ha scritto:
> Paperino ha pensato forte :
>> Wodka40° ha scritto:
> prova a far così
> Case Else
> .Columns(n).DefaultCellStyle.Alignment =
> DataGridViewContentAlignment.MiddleCenter
> .Columns(n).Width = 250
> .Columns(n).MinimumWidth = 190
> .Columns(n).HeaderCell.Value = "io lo vorrei vedere così 123 4567"
> .Columns(n).HeaderCell.Style.Alignment =
> DataGridViewContentAlignment.MiddleCenter
>
> risultato
> http://www.martek.it/immagini/griglia2.jpg

Ehi, vedi che lo fa anche a te :-).

Bye, G.

Wodka40°

unread,
Dec 29, 2011, 4:10:40 PM12/29/11
to
Paperino scriveva e il server registrava il messaggio 458060
> Wodka40° ha scritto:
scusa è
a questo punto non capisco cosa vuoi!...ci capiamo male (prendo la
colpa!)...!
Ho impostato middlecenter ovviamente il risultato
*
* Ciao bello 123 *
* sta qui
*
.................

riempie tutta la riga partendo dal centro...e continua a riga nuova dal
centro! e tutte le colonne sono spaziate uguale!!!...scusa da dove
dovrebbe continuare??? Una cosa del genere?
*
* Ciao bello 123 *
* sta qui
*
.................
Basta un middle left!
Scusami è!
La vedo centrata in altezza e centrata in larghezza...aiuto mi sfugge
qualcosa! è l'effetto John!!!

http://www.martek.it/immagini/griglia4.jpg
Ho giocato con gli header
.....abbi pazienza ...mi sembra spaziato tutto giustamente!!!
Lo stile è vero ha un background infelicissimo!...ho rimediato!

For n As Integer = 0 To .Columns.Count - 1
'faccio questo perchè non so se ci sono colonne!
Select Case n
Case 0
'prima colonna
.Columns(0).DefaultCellStyle.ForeColor =
Color.WhiteSmoke
.Columns(0).DefaultCellStyle.Font = New
Font("Arial", 8, FontStyle.Regular, GraphicsUnit.Point)
.Columns(0).DefaultCellStyle.BackColor =
Color.DarkSlateBlue
.Columns(0).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleLeft
.Columns(0).Width = 200
.Columns(0).MinimumWidth = 100
.Columns(0).HeaderCell.Value = "io" + vbCrLf +
"lo" + vbCrLf + "vorrei" + vbCrLf + "vedere così"
.Columns(0).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.MiddleCenter
.Columns(0).HeaderCell.Style.BackColor =
Color.DarkBlue
.Columns(0).HeaderCell.Style.ForeColor =
Color.WhiteSmoke

Case 1
'seconda colonna
.Columns(1).DefaultCellStyle.ForeColor =
Color.DarkBlue
.Columns(1).DefaultCellStyle.Font = New
Font("Arial", 8, FontStyle.Regular, GraphicsUnit.Point)
.Columns(1).DefaultCellStyle.BackColor =
Color.YellowGreen
.Columns(1).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.MiddleRight
.Columns(1).Width = 220
.Columns(1).MinimumWidth = 100
.Columns(1).HeaderCell.Style.BackColor =
Color.DarkBlue
.Columns(1).HeaderCell.Style.ForeColor =
Color.WhiteSmoke

Case Else
.Columns(n).DefaultCellStyle.Alignment =
DataGridViewContentAlignment.BottomLeft
.Columns(n).Width = 250
.Columns(n).MinimumWidth = 190
.Columns(n).HeaderCell.Value = "io lo vorrei
vedere così 123 4567"
.Columns(n).HeaderCell.Style.Alignment =
DataGridViewContentAlignment.MiddleLeft
.Columns(n).HeaderCell.Style.BackColor =
Color.DarkBlue
.Columns(n).HeaderCell.Style.ForeColor =
Color.WhiteSmoke
End Select
Next


....adesso mi sembra ci sia tutto....il primo header middlecenter...il
secondo topcenter...gli altri middle left
e con lo schifoso tema classico!
http://www.martek.it/immagini/griglia5.jpg
mi sembra che ci si possa stare no???....ma continuo a non capire che
difetto ti appare!

--
----- Italliaaaaa 3227! -----
Il grande maestro di pittura meta-gastro-fisica Luciano Lupoletti in:
David Arlequin
http://www.lupoletti.com/public/lupoletti/09-10-24-12-05-21@David%20Arlequin%20-%20Olio%20su%20tela.jpg

(ROTFL: oddio mi ribalto)


Wodka40°

unread,
Dec 29, 2011, 4:13:53 PM12/29/11
to
Wodka40° scriveva il 29/12/2011 :
> Paperino scriveva e il server registrava il messaggio 458060
>> Wodka40° ha scritto:
vado a letto che c'ho pure la febbre...notte! a domani!

--
----- Italliaaaaa 3227! -----

Paperino

unread,
Dec 30, 2011, 1:20:31 PM12/30/11
to
Il 29/12/2011 22:10, Wodka40° ha scritto:
> Paperino scriveva
>> Wodka40° ha scritto:
> a questo punto non capisco cosa vuoi!...ci capiamo male (prendo la
> colpa!)...!
> Ho impostato middlecenter ovviamente il risultato
> *
> * Ciao bello 123 *
> * sta qui
> *
> .................
> riempie tutta la riga partendo dal centro...e continua a riga nuova dal
> centro! e tutte le colonne sono spaziate uguale!!!...scusa da dove
> dovrebbe continuare??? Una cosa del genere?
> *
> * Ciao bello 123 *
> * sta qui
> *
> .................
> Basta un middle left!
> Scusami è!
> La vedo centrata in altezza e centrata in larghezza...
> aiuto mi sfugge qualcosa!

Centrata solo fino ad un certo punto. C'è un bel po' più
di spazio sulla destra che sulla sinistra, e a seconda
della dimensione della scritta e della colonna si va da
un risultato quasi perfetto ad uno davvero schifoso.
Prova a ridimensionare la colonna e vedi che succede.

Bye, G.

Wodka40°

unread,
Dec 30, 2011, 2:08:11 PM12/30/11
to
Paperino ci ha detto :
> Il 29/12/2011 22:10, Wodka40° ha scritto:
zac
> un risultato quasi perfetto ad uno davvero schifoso.
> Prova a ridimensionare la colonna e vedi che succede.
Ho capito
...ti sembrerà strano ma c'ha una spiegazione

..prima la cura:
.Columns(n).SortMode = DataGridViewColumnSortMode.NotSortable


e poi la spiegazione (in inglese sorry)
I just now noticed the slight offset you're referring to in the
columns—it does indeed create a little extra padding to the right of
each header. It's not a bug, though. There's a much simpler
explanation.

Like a ListView, the DataGridView supports sorting by columns.
Therefore, each column header reserves enough space to display the sort
glyph (usually an arrow) when calculating center justification.

If you want the column headers to be perfectly centered, you'll need to
disable sorting. Set the SortMode property for the column to
"NonSortable". This should prevent space from being reserved for the
sort glyph whenever the column text is center or right justified.

Tradotto
negli header se vuoi ordinare la colonna ...come in excel ti appare
l'icona con la freccia in giù....a destra lascia lo spazio extra per
questa icona!


Ciao!
;-)



--
----- Italliaaaaa 3227! -----
Pasquà...Pasquale Zagaria...u'fighh'Riccard
[Vieni avanti cretino (1982)
c'ho pure il video! http://www.martek.it/public/dblog/banfi1.swf ]


Paperino

unread,
Dec 30, 2011, 2:51:28 PM12/30/11
to
Wodka40° ha scritto:
> Paperino ci ha detto :
>> Wodka40° ha scritto:
> zac
>> un risultato quasi perfetto ad uno davvero schifoso.
>> Prova a ridimensionare la colonna e vedi che succede.
> Ho capito
> ...ti sembrerà strano ma c'ha una spiegazione
> ..prima la cura:
> .Columns(n).SortMode = DataGridViewColumnSortMode.NotSortable

...ma a me serve sortable :-(

> e poi la spiegazione (in inglese sorry)

No problem at all, really :-)

> I just now noticed the slight offset you're referring to in the
> columns—it does indeed create a little extra padding to the right of
> each header. It's not a bug, though. There's a much simpler explanation.
> Like a ListView, the DataGridView supports sorting by columns.
> Therefore, each column header reserves enough space to display the sort
> glyph (usually an arrow) when calculating center justification.

*OPPORCALAPORCACCIACHENONDICO*, e dire che l'avevo letta
tempo fa, 'sta cosa. E come al solito quando mi serve
quel cavolo di mononeurone non fa contatto :-(.

> If you want the column headers to be perfectly centered, you'll need to
> disable sorting. Set the SortMode property for the column to
> "NonSortable". This should prevent space from being reserved for the
> sort glyph whenever the column text is center or right justified.

OK, ho capito, mi tengo lo spazio. O magari ogni volta che
devo fare una sort, setto come sortable solo quella colonna,
vedo se è possibile, giocando sugli eventi degli header :-)

Gracias, bello :-)

Bye, G.

Wodka40°

unread,
Dec 31, 2011, 5:20:38 AM12/31/11
to
Nel suo scritto precedente, Paperino ha sostenuto :
> Wodka40° ha scritto:
zac
Hai anche un altra strada che però per spippoloni come me e te non
dovrebbe far paura più di tanto!...anche se enormemente più foriera di
codice!
...c'hai l'evento CellPainting....c'hai drawstring...io ho usato
drawimage per metterci una icona....1+1....
il mio codice era per spiegare: va raffinato ed ottimizzato
...ma hai il controllo totale dello spazio grafico della cella....può
rimanere sortable ed avere per esempio l'header sfumato da un colore a
trasparente...o pulsare...o avere in testo verticale su più
colonne...insomma non son certo io a doverti spiegare System.drawing e
Graphics!!!!

> Gracias, bello :-)
Grazie del bello
> Bye, G.
Buon fine d'anno!

--
----- Italliaaaaa 3227! -----
0 new messages