ユーザーがセルをダブルクリックしてその内容を変更できるC#winformsアプリケーションで編集可能なリストビューを作成しようとしています。誰かが私にいくつかのガイダンスおよび/または例を提供できればそれは素晴らしいでしょう。市販品を使うつもりはありません。
あなたは間違った質問をしている:)
ListViewは正しいコントロールではありません。 DataGridView コントロールを使用します。 ListViewのように見えるように構成できますが、セルのインプレース編集をサポートしています。
ObjectListView は、まさにそれ以上のことを行います。これは、通常の.NET ListViewのラッパーです。オープンソースです。
そのウェブサイトには Getting Started があり、ページ全体が セルの編集 に特化しています。
リストビューのDoubleClickイベントを使用することができ、それが呼び出されると、ユーザーが選択したアイテムに新しい値を入力する新しいフォームを開きます。次に、ユーザーが[OK]を押したら、特定のアイテムの値をユーザーが入力した値に編集します。
DataGridViewは友だちですSourceGridは代わりです
DataTemplateを使用して、列にテキストボックス(編集可能の場合)またはテキストブロック(編集不可の場合)が含まれていることを指定し、テキストボックスを、リストビューのitemsourceにバインドされているSource Object Collectionのクラスプロパティにバインドできます。
<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>
ニック・ハンショー
はい、DataGridViewを使用します。
セルを編集できるだけでなく、Tをグリッドに表示するクラスである汎用リストを宣言する場合、DataSource =そのリストを設定できます。グリッドビューを編集すると、実際にリストを自動的に編集できます。
そのサウンドから、代わりにDataGridViewの使用を検討してください。