Как исправить ширину столбца списка в форме окна C #? - PullRequest
2 голосов
/ 17 марта 2010

У меня есть просмотр списка, мне нужно исправить ширину столбца просмотра списка, чтобы во время выполнения пользователь не мог перетащить заголовки столбцов и изменить его размер ..... какова процедура ?? Я обыскал все свойства, но ни один из них не помог мне решить эту проблему .. это возможно в gridview, но как это будет возможно в listview ....

Ответы [ 4 ]

14 голосов
/ 17 марта 2010

Самый простой способ - использовать ColumnWidthChanging событие:

private void listView_ColumnWidthChanging(object sender, ColumnWidthChangingEventArgs e)
{
    e.Cancel = true;
    e.NewWidth = listView.Columns[e.ColumnIndex].Width;
}
1 голос
/ 17 марта 2010

Использовать ObjectListView . Это не только позволяет отдельным столбцам иметь фиксированную ширину, но также иметь минимальную и максимальную ширину. Он выполняет сложную работу по отлову всех случаев, включая Ctrl-Numpad- +, чтобы их нельзя было обойти.

0 голосов
/ 14 февраля 2019

Одним из способов достижения этого является установка для Selector.IsEnabled значения false.

Я добавлю код, который использовал в одном из моих приложений, над которым я работал, просто вы легко его получите.

Код ListView (Фокус на свойстве GridView ColumnHeaderContainerStyle) -

<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>

Для myHeaderStyle (фокус на свойство Selector.IsEnabled и триггер для 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>

Теперь вы не сможете изменить размер столбцов, и они также будут выглядеть отключенными. Для этого просто добавьте триггер для свойства IsEnabled, и он будет выглядеть так, как вы хотите.

0 голосов
/ 01 августа 2010

Спасибо большое, я использовал его в vb.net как

 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...