所以我在C#winforms中创建了一个LinkedList,现在我想在添加,删除和搜索节点值时以可视方式显示列表。我使用3个按钮控件,一个用于添加节点,删除节点,最后一个用于搜索节点值。然后,我有一个文本框,应该从用户读取一个int值(例如10),然后在列表框中将该值显示为链接列表。所以,我创建了一个Node类和一个linkedlist类。 Node类包含一个值和对下一个节点的引用:
class Node
{
public int value;
public Node next;
public int Value
{
get { return this.value; }
set { this.value = value; }
}
public Node Next
{
get;
set;
}
public Node()
{
this.Next = null;
this.value = 0;
}
}
和一个带有我所有方法的LinkedList类(我只会编写我的add方法,所以代码不会太多)
public void Add(int val)
{
Node newNode = new Node();
newNode.value = val;
if (head == null)
head = newNode;
if (current.Next == null)
{
current.Next = newNode;
current = newNode;
}
size++;
}
所以,现在imm试图做的是写一些代码,这样当我在文本框中输入一个int数时,它应该作为LinkedList出现在Listbox中(用我的LinkedList类中的add方法)
我尝试在“添加”按钮的事件处理程序上执行此操作:
LinkedList l1 = new LinkedList();
l1.Add(textBox1);
但显然这甚至不符合逻辑。有人可以请我指出正确的方向吗?
答案 0 :(得分:1)
你可能想要
l1.Add(Int32.Parse(textBox1.Text))
textBox1
是表示文本框的对象,而不是存储在其中的值(即Text
属性)。 TextBox
以字符串格式存储它们的值,因此使用Int32.Parse()
(从字符串(或其他值)转换为int。
应该注意Int32.Parse
不是最安全的方式,如果你想验证该值是否真的是int
,你应该使用Int32.TryParse()
答案 1 :(得分:1)
如果您ListBox
被称为listBox1
,则会添加如下:
listBox1.Items.Add(something);
您可以直接添加字符串,但您可能希望添加一个LinkedList
个对象。您也可以像上面一样添加它。
listBox1.Items.Add(l1 );
..但在向ToString
课程添加LinkedList
方法之前,它不会显示任何有用的内容:
public override string ToString()
{
return "value : " + this.value; // maybe you want to display more here?
}
由你来决定你想要展示什么;如果链接设置可能是指标..?
我还建议在LinkedList
类中添加一个或多个构造函数,以便立即设置该值:
public Node(int value_)
{
this.Next = null;
this.value = value_;
}
然后您的上述代码可以转到:
LinkedList l1 = new LinkedList(textBox1.Text);
listView1.Items.Add(l1);