Esiste un modo per assegnare a ciascuna colonna in un oggetto DataGridView una larghezza percentuale della griglia totale? Attualmente sto usando larghezze fisse, ma vorrei dare a una colonna una larghezza del 15%, un'altra una larghezza del 25% e così via in modo che il 100% della tabella sia riempito e ridimensionato con la griglia.Larghezza colonna DataGridView come percentuale
risposta
Provare a utilizzare la proprietà DataGridViewColumn.FillWeight. Fondamentalmente si assegna un peso a ogni colonna e le colonne si ridimensionano in base a tali pesi. L'arcticolo MSDN non è eccezionale. Vedi l'articolo qui sotto per una migliore spiegazione -
Presenting Data with the DataGridView Control in .NET 2.0—Automatic Column Sizing
Può utilizzare un convertitore di valori
Questo sottrae un parametro ma è possibile dividerlo per un parametro.
<local:WidthConverter x:Key="widthConverter"/>
<GridViewColumn Width="{Binding ElementName=lvCurDocFields, Path=ActualWidth, Converter={StaticResource widthConverter}, ConverterParameter=100}">
[ValueConversion(typeof(double), typeof(double))]
public class WidthConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
// value is the total width available
double otherWidth;
try
{
otherWidth = System.Convert.ToDouble(parameter);
}
catch
{
otherWidth = 100;
}
if (otherWidth < 0) otherWidth = 0;
double width = (double)value - otherWidth;
if (width < 0) width = 0;
return width; // columnsCount;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
basta creare file skin. e applicarlo tramite web config
Affinché questa sia una risposta valida, fornire ulteriori dettagli, esempi, collegamenti o qualcosa che giustifichi la risposta. – ethrbunny
Grazie per il codice di esempio. Sono sicuro che questo sarà usato da qualcuno anche se ho trovato l'altra risposta molto più facile da implementare. Apprezzo il tuo aiuto! –