0

.txt ファイルから抽出した結果のリストが表示されます。リストされたすべての結果の後ろにチェックボックスを追加したいと思います。以下は私のコードです:

    private void LoadFile() {
        List<string> lines = new List<string>();
        try
        {
            StreamReader sr = new StreamReader("test.txt");
            while (!sr.EndOfStream)
            {
                lines.Add(sr.ReadLine());
            }
            sr.Close();

            for (int i = 3; i < lines.Count; i++)
            {
                resultsTreeView.Items.Add(lines[i].ToString().Substring(67,17));
                resultsTreeView.Items.Add(CheckBox[i]);
            }

抽出される結果は毎回変わるため、チェックボックスを追加するにはどうすればよいですか? 結果をユーザーに出力できるように、どのボックスがチェックされたかを追跡したいと思います。ありがとうございました!

4

2 に答える 2

0
            for (int i = 3; i < lines.Count; i++)
            {
                resultsTreeView.Items.Add(lines[i].ToString().Substring(67,17));
                resultsTreeView.Items.Add(new CheckBox()); 
                // resultsTreeView.Items.Add(BuildCheckBox())
            }

また

CheckBox BuildCheckbox()
{
   CheckBox C = new CheckBox();
   return C;
}

チェックボックスを作成するために必要なのはこれだけです。または、チェックボックスを返す関数を作成することもできます。その中にチェックボックスの新しいインスタンスを作成し、属性/サブスクライブを必要な方法でイベントに設定して返します。

どのチェックボックスがチェックされているかの追跡については、「resultsTreeView」のタイプを提供するだけで済みます

編集 :

TreeView のチェックボックスをループし、チェックされたチェックボックスで何かを行うには:

resultsTreeView.Items.OfType<CheckBox>().ToList()
                .ForEach(C => 
                { 
                    if (C.IsChecked.HasValue && C.IsChecked.Value == true) 
                    { 
                        //DoSomething
                    } 
                });
于 2013-07-08T11:00:46.360 に答える
0

あなたが何を探しているのか正確にはわかりません。resultsTreeView は TreeViewItem だと思います。また、wpfで作業していると思います。wpf を介して次のことができます。

for (int i = 0; i < lines.Count(); i++)
{
    resultsTreeView.Items.Add(lines[i].ToString().Substring(67,17));
}


<TreeView x:Name="resultsTreeView" HorizontalAlignment="Left" Height="100" Margin="37,344,0,0" VerticalAlignment="Top" Width="257" >
    <TreeView.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding}"/>
                <CheckBox/>
            </StackPanel>
        </DataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

コードビハインドを使用して同様のことを行うことができます

for (int i = 0; i < mylist.Count(); i++)
{
    resultsTreeView.Items.Add(mylist[i]);
}
resultsTreeView.ItemTemplate = TreeViewDataTemp;

次に、次の方法で TreeViewDataTemp を作成します

private static DataTemplate TreeViewDataTemp
    {
        get
        {
            DataTemplate TVDT = new DataTemplate();

            FrameworkElementFactory Stack = new FrameworkElementFactory(typeof(StackPanel));
            Stack.SetValue(StackPanel.OrientationProperty, Orientation.Horizontal);

            FrameworkElementFactory TextB = new FrameworkElementFactory(typeof(TextBlock));
            TextB.SetValue(TextBlock.TextProperty, new Binding());

            FrameworkElementFactory ChkBox = new FrameworkElementFactory(typeof(CheckBox));

            Stack.AppendChild(TextB);
            Stack.AppendChild(ChkBox);

            TVDT.VisualTree = Stack;

            return TVDT;
        }
    }

上記は、チェックボックスと一緒にテキストである1つのアイテムを提供します。または、メソッドは、追加するすべての文字列アイテムの後にチェックボックスを新しいアイテムとして追加します..

for (int I=0; I<lines.Count(); I++)
{
    resultsTreeView.Items.Add(mylist[i]);
    resultsTreeView.Items.Add(new CheckBox());
}
于 2013-07-08T11:05:22.937 に答える