Como corrigir a largura da coluna de uma ListView no formulário C# Windows?
Pergunta
Eu tenho um ListView que preciso para corrigir a largura da coluna do ListView para que, no tempo de execução, o usuário não possa arrastar os colunas e redimensioná -lo ..... qual é o procedimento ?? Eu pesquisei todas as propriedades, mas nenhuma delas me ajudou a resolver esse PBM .. isso é possível no Gridview, mas como será possível no ListView ....
Solução
A maneira mais fácil é usar ColumnWidthChanging
evento:
private void listView_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
e.Cancel = true;
e.NewWidth = listView.Columns[e.ColumnIndex].Width;
}
Outras dicas
Usar ObjectListView. Isso não apenas permite que colunas individuais sejam fixa, mas também tenham larguras mínimas e máximas. Faz o trabalho árduo de pegar tudo Casos, incluindo Ctrl-Numpad-+, para que não possam ser contornados.
Muito obrigado, usei no vb.net como
Private Sub ListView1_ColumnWidthChanging(ByVal sender As Object, ByVal e As System.Windows.Forms.ColumnWidthChangingEventArgs) Handles ListView1.ColumnWidthChanging
e.Cancel = True
e.NewWidth = ListView1.Columns(e.ColumnIndex).Width
End Sub
Uma maneira de conseguir isso é definir o seletor.Imenabled como false.
Vou colocar um código que usei em um dos meus aplicativos em que estava trabalhando, é simples que você o obtém facilmente.
Código da ListView (foco na propriedade ColumnHeaderContAnerStyle da Gridview) -
<ListView Grid.Row="1" BorderBrush="{StaticResource MainForegroundBrush}" BorderThickness="1"
HorizontalContentAlignment="Center" FontSize="11" Width="auto" Height="auto"
ItemsSource="{Binding CurrentPkgs,UpdateSourceTrigger=PropertyChanged}"
Style="{DynamicResource ListViewStyle1}" ItemContainerStyle="{DynamicResource ListViewItemStyle1}">
<ListView.View>
<GridView ScrollViewer.VerticalScrollBarVisibility="Visible" AllowsColumnReorder="False"
ColumnHeaderContainerStyle="{StaticResource myHeaderStyle}">
<GridViewColumn Header="ManualId" Width="70" DisplayMemberBinding="{Binding Path=ManualId}" />
<GridViewColumn Header="ManualPath" Width="210" DisplayMemberBinding="{Binding Path=ManualPath}" />
<GridViewColumn Header="Revision" Width="60" DisplayMemberBinding="{Binding Path=RevVersion}" />
<GridViewColumn Header="PublishedOn" Width="80" DisplayMemberBinding="{Binding Path=PublishedOn}" />
<GridViewColumn Header="PackageId" Width="70" DisplayMemberBinding="{Binding Path=PackageId}" />
</GridView>
</ListView.View>
</ListView>
Para MyHeaderTyle (foco em seletor.isenabled Property e Trigger for isEnabled) -
<Style x:Key="myHeaderStyle" TargetType="{x:Type GridViewColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Left"/>
<Setter Property="MinWidth" Value="50"/>
<Setter Property="Selector.IsEnabled" Value="False"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Background" Value="{StaticResource MainBackgroundBrush}"/>
<Setter Property="Foreground" Value="{StaticResource MainForegroundBrush}"/>
<Setter Property="BorderBrush" Value="#999"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="#111"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="#ccc"/>
</Trigger>
</Style.Triggers>
</Style>
Agora você não poderá redimensionar as colunas e elas também parecerão desativadas. Para isso, basta adicionar um gatilho à propriedade IseNabled, então ela parecerá da maneira que você deseja.