2

私はリストを扱っています。現在、リスト内のアイテムの位置を決定する実験を行っています:first、、。関数を使用してリスト内のアイテムの最初と最後の位置を特定し、ラベルを使用してアイテム名を表示することができました。私のフォームの3つのボタン:ShowFirstItem ShowNextItemとShowLastItemは、ラベル内の対応するアイテムを表示します。次のアイテムの表示に問題があります。と呼ばれる特別なメソッドがあります。クリックの内側からこのメソッドを呼び出すと、次のエラーが発生します。このエラーを回避して、現在ポイントされているアイテムを表示するにはどうすればよいですか?nextlastgetPostionnextGetNextTreeShowNextItemCannot implicitly convert type 'TreeFarm.Form1.fruit_trees' to 'string'.

namespace TreeFarm {
     public partial class Form1: Form {
         public Form1() {
             InitializeComponent();
         }

         public class ListForTrees {


             public fruit_trees GetNextTree() {
                 //save currently pointed tree
                 fruit_trees tree = this.current_tree;
                 if (tree != null) {
                     //move current_tree to the next tree, to be returned next time
                     current_tree = current_tree.next_tree;
                     //return saved tree object
                 }
                 return tree;
             }

         }
         private void ShowNextItem_Click(object sender, EventArgs e) {
             //Show Next Item
             labelSpecificTree.Text = mainlist.GetNextTree();
         }

     }
4

2 に答える 2

2

GetNextTree() メソッドが fruit_trees オブジェクトを返すためですが、その戻り値を ShowNextItem 内の文字列 (labelSpecificTree の Text プロパティ) に設定しようとしています。代わりに、次のようにする必要があります。

private void ShowNextItem_Click(object sender, EventArgs e)
{
    //Show Next Item
    labelSpecificTree.Text = mainlist.GetNextTree().ToString(); 
}
于 2012-12-14T02:14:04.637 に答える
1

あなたはあなたを文字列に変換する必要がありfruit_tree、ケースも考慮したいかもしれませんnull:

private void ShowNextItem_Click(object sender, EventArgs e)
{
    //Show Next Item
    fruit_trees nextTree = mainlist.GetNextTree();
    if (nextTree == null)
    {
        labelSpecificTree.Text = "No more trees!";
    }
    else
    {
        labelSpecificTree.Text = nextTree.ToString();
    }
}

編集: MattSmith が指摘したように、おそらくnextTree.GetTreeType他の方法と一致させるために代わりに使用することをお勧めします。それはあなた次第です。

于 2012-12-14T02:12:13.463 に答える