2014-11-22 3 views
0

그래서 C# winforms에서 LinkedList를 만들고 이제 노드 값을 추가, 제거 및 검색 할 때 시각적으로 목록을 표시하려고합니다. 저는 3 개의 버튼 컨트롤을 사용합니다. 하나는 노드 추가, 하나는 노드 제거, 다른 하나는 노드 값 검색입니다. 그런 다음 사용자 (예 : 10)에서 int 값으로 읽은 다음 목록 상자에 링크 된 목록으로 그 값을 표시해야하는 텍스트 상자가 있습니다. 그래서, 나는 Node 클래스와 linkedlist 클래스를 만들었다. 노드 클래스는 값과 다음 노드에 대한 참조 원하는 분야텍스트 상자에서 목록 상자로 출력 표시 C#

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의 클래스 (난 단지 내 추가 방법을 쓸 것이다, 그래서 늘 너무 많은 코드 일)

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의로 목록 상자에 표시 될 때 입력하도록

(내 LinkedList의 클래스 내 추가 방법) 코드를 작성하는 것입니다

추가 단추에 대한 이벤트 처리기에서이 작업을 시도했습니다 :

LinkedList l1 = new LinkedList(); 
l1.Add(textBox1); 

하지만 분명히 논리적이지 않습니다. 누군가 나에게 올바른 방향을 가르쳐 주시겠습니까?

답변

1

당신은 아마

l1.Add(Int32.Parse(textBox1.Text)) 

textBox1이 텍스트 상자를 나타내는 객체가 아닌합니다 (Text 속성입니다) 그 안에 저장되어있는 값입니다합니다. TextBox의 저장 문자열 형식으로 자신의 가치, 문자열 (또는 다른 값으로 변환 Int32.Parse() (의 따라서 사용) int로.

당신이 원하는 경우 Int32.Parse이 작업을 수행하는 가장 안전한 방법이 아니다, 그리고 주목해야한다

값은 당신이 사용해야 진정한 int가 있는지 확인하기 위해 Int32.TryParse()

+0

그리고에 그 값을 표시하기 위해 내 목록 상자, 내 목록 상자 이벤트 처리기 또는 내 단추 이벤트 처리기에서 일부 코드를 작성해야합니까? 혼란 스러웠습니다 ... – Use13343

+0

아마도이 코드를 설명하지 않았기 때문에이 답변은 저품목 리뷰 대기열에 나타났습니다.당신이 그것을 (당신의 대답에서) 설명한다면, 당신은 훨씬 더 upvotes를 얻을 가능성이 높습니다. 그리고 질문자는 뭔가를 배울 가능성이 더 큽니다! –

+0

이게 더 좋을 것 같아. @TheGuywithTheHat – user2008934

1

경우 ListBox이라고 listBox1이처럼 추가 :

listBox1.Items.Add(something); 

직접 문자열을 추가 할 수 있지만, 당신은 아마 추가 할 귀하의 LinkedList 개체 중 하나입니다. 당신이 당신의 LinkedList 클래스에 ToString 방법을 추가 할 때까지 유용 아무것도 표시되지 않습니다 ..하지만 당신은

listBox1.Items.Add(l1); 

.. 위와 같이도 추가 할 수 있습니다 :

public override string ToString() 
{ 
    return "value : " + this.value; // maybe you want to display more here? 
} 

그것은 당신까지이다 네가 원하는 것을 결정하라. 어쩌면 지표가 링크가 설정되면 ..? 그런 다음 위의 코드로 전환 할 수

public Node(int value_) 
{ 
    this.Next = null; 
    this.value = value_; 
} 

: 는 또한 바로 최소 값을 설정하기 위해 LinkedList 클래스에 하나 이상의 생성자를 추가 제안

LinkedList l1 = new LinkedList(textBox1.Text); 
listView1.Items.Add(l1); 
+0

완벽한 답변을 해주셔서 감사합니다. 하지만 내 목록에서만 정수를 처리하기 때문에 override ToString 함수를 사용해야합니까? – Use13343

+0

ToString 메서드는 클래스의 인스턴스를 표시하는 방법을 제어하려고 할 때 항상 필요합니다. 이것은 내용에 독립적입니다. ToString 메서드를 사용하여 도움을받지 않는 한 Listbox는 숫자를 표시 할 수 없습니다. (단순히 숫자를 추가하지 않으면 (장면 뒤에서 문자열에 넘김) 그러나 이것들은 많이 사용할 수있는 객체가 아닙니다.) - 응답에 만족하면 체크 표시를 클릭하여 수락 할 수 있습니다 왼쪽 상단에 .. 질문이 있으시면 언제든지 물어보십시오! – TaW

관련 문제