1

ユーザーがファイルを含むフォルダーを選択しました。選択したフォルダー内のファイルを表示するリストビューを作成しています。各ファイルの内容を表示したいのですが、ユーザーがlistviewitemからファイルをチェックしたときに表示したいです。私は次のコードを使用しています:

if (listView1.Items[0].Checked == true)
{
   //....
}

うまくいかないのはなぜですか?たとえば、何からデータを使用したいですか:

button1.Click(...)button2.Click(...)

4

3 に答える 3

4

何を探しているのか正確にはわかりませんが、ListView 内のどの項目がチェックされているかを判断する方法はいくつかあります。

// This loops through only the checked items in the ListView.
foreach (ListViewItem checkedItem in listView1.CheckedItems) {
    // All these ListViewItems are checked, do something...
}

// This loops through all the items in the ListView and tests if each is checked.
foreach (ListViewItem item in listView1.Items) {
    if (item.Checked) {
        // This ListViewItem is Checked, do something...
    }
}

ListViewItemクラスを使用して、選択した各項目の詳細を調べることができます。

于 2010-09-10T21:11:03.207 に答える
1

どのイベントをキャプチャしていますか? それがである場合、その項目がチェックされている/チェックされてItemCheckいない場合は を使用できないことに注意してください。リストビュー要素全体をチェックするときに、パラメーターを取得し、を使用してその要素を除外するlistView1.Item[0].Checked必要があります。イベント を発生させた項目を個別に評価するために使用します。ItemCheckEventArgse.Indexe.NewValueItemCheck

于 2010-09-10T23:50:06.087 に答える
0

素敵なMVVMデザインを作成します。ViewModel には ObservableCollection FileList があり、File には必要な情報が保持されます。このクラスには、IsFileSelectedUI プロパティも含まれているため、コードを正しく使用できます。次に、XAML の場合は簡単です。

<ScrollViewer Grid.Column="0" Grid.Row="1" >
<ItemsControl ItemsSource="{Binding FileList}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="2">
                <StackPanel Orientation="Horizontal">
                    <CheckBox IsChecked="{Binding IsFileSelectedUI , Mode=TwoWay}"/>
                    <TextBlock Text="{Binding FileName}"/>
                </StackPanel>
            </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

次に、物事は次のように簡単です。

FileList.Where(file=>file.IsFileSelectedUI) など

私があなたの言ったことを理解していれば:)

于 2010-09-10T23:43:58.237 に答える