Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
DataGridView : Problemi di ereditarietà
martedì 25 maggio 2010 - 18.44
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
lupen1981
Profilo
| Newbie
1
messaggi | Data Invio:
mar 25 mag 2010 - 18:44
Salve a tutti, mi sono imbattuto in un bel problema e ci sto impazzendo ormai da una settimana:
Ho un applicativo WinForm che dialoga con Database.
Per esigenze ho creato uno User Control
public partial class TableBrow : UserControl
{
public event EventHandlerItem RecordSelezionato;
internal DataTable dati
{
get
{
return (DataTable)dgrTable.DataSource;
}
}
internal BindingManagerBase bmb;
public TableBrow()
{
InitializeComponent();
}
void InitBinding()
{
bmb = this.BindingContext[dgrTable.DataSource];
bmb.PositionChanged += new EventHandler(bmb_PositionChanged);
bmb.CurrentChanged += new EventHandler(bmb_CurrentChanged);
OnRecordSelezionato(this);
}
void UnInitBinding()
{
bmb.PositionChanged -= bmb_PositionChanged;
bmb.CurrentChanged -= bmb_CurrentChanged;
bmb = null;
}
void bmb_PositionChanged(object sender, EventArgs e)
{
if (bmb.Position>-1)
OnRecordSelezionato(sender);
}
public void OnRecordSelezionato(Object sender)
{
if (RecordSelezionato != null && bmb.Current != null)
{
EventArgsItem e = new EventArgsItem();
e.ItemDataRow = ((DataRowView)bmb.Current).Row;
RecordSelezionato(sender, e);
}
}
public DataRow RecordCorrente
{
get
{
if (bmb.Position > -1 && bmb.Current != null)
return ((DataRowView)bmb.Current).Row;
else
return null;
}
}
public void LoadData(DataTable table)
{
dgrTable.SuspendLayout();
if (bmb != null)
bmb.SuspendBinding();
dgrTable.DataSource = table;
if (bmb != null)
bmb.ResumeBinding();
if (bmb == null)
InitBinding();
}
public void ClearData()
{
if (bmb != null)
UnInitBinding();
dgrTable.DataSource = null;
DataNavigator.nRecords = 0;
}
void dgrTable_ColumnHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
dgrTable.AutoResizeColumn(e.ColumnIndex, DataGridViewAutoSizeColumnMode.AllCells);
}
Come si evince dal codice c'è un BindingManagerBase e un metodo LoadData per impostare il DataSource del datagridview.
Fin qui Tutto ok il tutto funziona abbastanza alla grande.
Mi sono imbattuto in un problema diciamo visuale.
Praticamente il controllo si trova in un windowsForm ed è ancorato a tutti gli angoli in modo che al ridimensionamento del Form venga ridimensionato anche il controllo TableBrow.
Ed è qui che c'è il problema il controllo non viene renderizzato correttamente.
Se faccio la stessa cosa mettendo nel Form un controllo DataGridView invece del mio controllo TableBrow tutto funziona alla grande
Ho cercato di bypassare il problema creando una classe ed ereditando da DataGridView , l'ho posizionata sul Form ma stesso problema.
Ecco le immagini di Testimonianza il DataGridView superiore corrisponde al mio controllo
quello inferiore è un puro DataGridView
960x650
77Kb
ECCO COSA ACCADE QUANDO MASSIMIZZO IL FORM
1924x1056
112Kb
P.S. SE RIASSEGNO LA PROPRIETA' DATASOURCE IL CONTROLLO VIENE RIDISEGNATO.
non sò più dove sbattere la testa !.
Attendo Vostre
Lupen1981
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !