0

いくつかのコントロールを動的に作成するコードがたくさんあります。フォルダーを検索し、その中のファイル名を一覧表示します。フォルダ内の各ファイルに対して、チェックリストボックス項目、リストボックス項目、および 2 つのチェックボックスが作成されます。これはうまく機能しており、意図したとおりです。

 private void getAllFiles(string type)
    {
        try
        {
            string listPath = "not_defined"; 
            if (type == "internal_mod")
            {
                int first_line = 76;
                int next_line = 0;
                int i = 0;
                CheckBox[] chkMod = new CheckBox[100];
                CheckBox[] chkTool = new CheckBox[100];
                listPath = this.internalModsPath.Text;
                string[] filesToList = System.IO.Directory.GetFiles(listPath);
                foreach (string file in filesToList)
                {     
                    if (!internalModsChkList.Items.Contains(file))
                    {
                        internalModsChkList.Items.Add(file, false);
                        string fileName = Path.GetFileName(file);
                        internalModNameList.Items.Add(fileName);

                        //-----------------
                        // Draw Checkboxes
                        //-----------------
                        chkMod[i] = new CheckBox();                                                 chkTool[i] = new CheckBox();
                        chkMod[i].Name = "modChk" + i.ToString();                                   chkTool[i].Name = "modChk" + i.ToString();
                        //chkMod[i].TabIndex = i;                                                   //chkTool[i].TabIndex = i;
                        chkMod[i].Anchor = (AnchorStyles.Left | AnchorStyles.Top);                  chkTool[i].Anchor = (AnchorStyles.Left | AnchorStyles.Top);
                        chkMod[i].Checked = true;                                                   chkTool[i].Checked = false;
                        chkMod[i].AutoCheck = true;                                                 chkTool[i].AutoCheck = true;
                        chkMod[i].Bounds = new Rectangle(549, first_line + next_line, 15, 15);      chkTool[i].Bounds = new Rectangle(606, first_line + next_line, 15, 15);

                        groupBox7.Controls.Add(chkMod[i]);                                          groupBox7.Controls.Add(chkTool[i]);
                        //-----------------

                        next_line += 15;
                        i++;
                    }
                }
            }

今私の問題は、チェックリストボックスのチェックされたアイテムに基づいて、ユーザーがこれらすべてのものを再度削除できるようにしたいということです。チェックリストボックスのアイテムまたはリストボックスのアイテムを削除しても問題はありませんが、削除したい私も作成する2つのチェックボックス..

これは、チェックリストボックスとリストボックスのアイテムを削除するために得たものです

private void internalModListDel_btn_Click(object sender, EventArgs e)
    {
        int count = internalModsChkList.Items.Count;
        for (int index = count; index > 0; index--)
        {
            if (internalModsChkList.CheckedItems.Contains(internalModsChkList.Items[index - 1]))
            {
                internalModsChkList.Items.RemoveAt(index - 1);
                internalModNameList.Items.RemoveAt(index - 1);
                groupBox7.Controls.Remove(modChk[index - 1]);
            }

        }


    }

ご覧のとおり、チェックボックスを削除するために何かを書き込もうとしましたが、機能せず、機能させる方法がわかりません

お手伝いできますか?

4

1 に答える 1

0

UserControls を使用してみてください。ListBox コントローラを使用してこれらの UserControls を表示します。ユーザー コントロールは、これらのチェックボックスと必要なラベルで構築できます。

もう 1 つの提案は、作成した UserContorols を含む ObservableCollection にこのリストをバインドすることです。

このようにして、内部のアイテムを追加/削除/変更するのがはるかに簡単になります。

于 2013-10-06T16:15:20.437 に答える