所以我想要做的是: 我有5個主要複選框,每個複選框有3個子複選框。 選擇了一些框後,我試圖選擇一個隨機的選定框,然後在文本框中顯示它。如何從選定的複選框中選擇隨機對象
我的第一個問題是,這是TreeView的路要走嗎?這似乎是實現分層視圖的最佳方式。
第二個問題是選擇隨機項目,我需要先插入項目列表/數組?
編輯:
好了,到目前爲止我的代碼是這樣的:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TreeSelector
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
treeView1.CheckBoxes = true;
//TreeView
treeView1.Nodes.Add("Main0");
treeView1.Nodes[0].Nodes.Add("Child1");
treeView1.Nodes[0].Nodes.Add("Child2");
treeView1.Nodes[0].Nodes.Add("Child3");
treeView1.Nodes.Add("Main1");
treeView1.Nodes[1].Nodes.Add("Child1");
treeView1.Nodes[1].Nodes.Add("Child2");
treeView1.Nodes[1].Nodes.Add("Child3");
treeView1.Nodes.Add("Main2");
treeView1.Nodes[2].Nodes.Add("Child1");
treeView1.Nodes[2].Nodes.Add("Child2");
treeView1.Nodes[2].Nodes.Add("Child3");
treeView1.Nodes.Add("Main3");
treeView1.Nodes[3].Nodes.Add("Child1");
treeView1.Nodes[3].Nodes.Add("Child2");
treeView1.Nodes[3].Nodes.Add("Child3");
treeView1.Nodes.Add("Main4");
treeView1.Nodes[4].Nodes.Add("Child1");
treeView1.Nodes[4].Nodes.Add("Child2");
treeView1.Nodes[4].Nodes.Add("Child3");
//TreeView setting
treeView1.Location = new Point(0, 25);
treeView1.Size = new Size(160, 350);
this.ClientSize = new Size(300, 400);
}
private void button1_Click_1(object sender, EventArgs e)
{
var checkboxes = Control.AllControls<CheckBox>();
}
}
static class ExtensionHelpers
{
public static IEnumerable<T> AllControls<T>(this Control startingPoint) where T : Control
{
bool hit = startingPoint is T;
if (hit)
{
yield return startingPoint as T;
}
foreach (var child in startingPoint.Controls.Cast<Control>())
{
foreach (var item in AllControls<T>(child))
{
yield return item;
}
}
}
}
}
什麼我現在想要做的是應用How can I iterate through all checkboxes on a form?由克里斯·s鏈接,我的代碼。它給出的錯誤是'Control'不包含button1_Click_1上'AllControls'的定義。 AllControls部分在IEnumerable之類的代碼中也不是高調的。
關於將選定框添加到列表我在這裏丟失了什麼?
它可以說是簡單的東西。我應該提到我不是一個好的程序員,我正在努力練習。如果你需要更多的信息告訴我,我會盡力提供。
是的。做一個列表並選擇一個隨機索引。這是最簡單的方法。 –
關於你的第一個問題,「TreeView」是爲什麼去做的?這取決於你,我們不知道你的應用程序是什麼樣的,或者它的功能是什麼。 「最佳」控件根據應用程序的使用方式而有所不同。至於第二個問題,給控件的'Tag'屬性指定一個數字,使用'Random.Next(1,16)'隨機選取一個,然後遍歷你的控件找到相應的'Tag'值。 – sab669