it-swarm.com.ru

Редактируемый ListView

Я ищу, чтобы создать редактируемый ListView в приложении winforms C #, где пользователь может дважды щелкнуть по ячейке, чтобы изменить ее содержимое. Было бы здорово, если бы кто-то мог дать мне какое-то руководство и/или пример. Я не собираюсь использовать какие-либо коммерческие продукты. 

18
THE DOCTOR

Вы задаете не тот вопрос :)

ListView не является правильным элементом управления. Используйте DataGridView элемент управления. Его можно настроить так, чтобы он выглядел как ListView, но он поддерживает редактирование ячеек на месте.

14
Simon Gillbee

ObjectListView сделает именно это и многое другое. Это обертка вокруг обычного .NET ListView. Это с открытым исходным кодом. 

На его веб-сайте есть Начало работы , чтобы помочь вам начать, а также целая страница, посвященная редактированию ячеек

6
Grammarian

Вы можете использовать событие DoubleClick списка, и при его вызове вы откроете новую форму, где пользователь введет новое значение для выбранного элемента. Затем, когда пользователь нажал кнопку «ОК», вы измените значение определенного элемента на введенное пользователем.

1
A. Abiri

DataGridView ваш друг SourceGrid является альтернативой

0
Pavels

Вы можете использовать DataTemplate, чтобы указать, что столбец содержит текстовое поле (если редактируемое) или текстовое поле (если не редактируемое), а затем связать текстовое поле со свойством класса из вашей коллекции исходных объектов, которая связана с источником элементов вашего списка.

<Window.Resources>
    <ResourceDictionary>
        <DataTemplate x:Key="NameHeader">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="Name" VerticalAlignment="Center" Margin="10,0,0,0" />
            </StackPanel>
        </DataTemplate>
        <DataTemplate x:Key="NameCell">
            <StackPanel Orientation="Horizontal">
                <TextBox Text="{Binding Path=Name}" VerticalAlignment="Center" Margin="10,0,0,0" />
            </StackPanel>
        </DataTemplate>
    </ResourceDictionary>
</Window.Resources>

<Grid>
    <ListView x:Name="lvwList" Height="200" VerticalAlignment="Top" ItemsSource="{Binding Path=SourceObjectCollection}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Name" HeaderTemplate="{StaticResource NameHeader}" CellTemplate="{StaticResource NameCell}" Width="140" />
            </GridView>
        </ListView.View>
    </ListView>
</Grid>

Ник Хэншоу

0
Nick Hanshaw

Да, используйте DataGridView. 

Вы можете не только редактировать ячейку, но если вы объявляете общий список, где T - это класс, который вы хотите отобразить в сетке, вы можете установить DataSource = этот список, и когда вы редактируете сетку, вы фактически редактируете список автоматически!

0
dcarl661

Судя по звукам, вы можете рассмотреть возможность использования вместо DataGridView.

DataGridView (MSDN)

0
jblaske