-9

あるメソッドから別のメソッドに文字列値を渡そうとしています。これが私の2つの方法です。

方法1-

public void listBox1_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
    if (e.AddedItems.Count > 0)
    {
        var c_id = (e.AddedItems[0] as Foodlist).C_ID;
        string listboxid = c_id.ToString();
    }
}

比較に使用できるように、2番目のメソッドに文字列listboxid値が必要です。
方法2-

public void deletemyfood()
{
    using (FoodDataContext context = new FoodDataContext(Con_String))
    {
        string listboxindex = listboxid;
        IQueryable<FoodViewModel> foodQuery = from c in context.FoodTable where c.C_ID.ToString() == listboxindex select c;
        ....
    }
}

何かアイデアや提案はありますか?

4

1 に答える 1

2

戻り値とパラメーターを使用する方法の簡単な例を次に示します。

class Program
{
    static void Main(string[] args)
    {
        var result = Method1("Test");
    }

   static string Method1(string input)
   {
       return string.Format("I got this input: {0}", input);
   }
}

この例では、メソッドMethod1は文字列パラメーターを受け取り、文字列を返します。

あなたの場合、メソッドのシグネチャを次のように変更したいかもしれませんDeleteMyFood:

public void DeleteMyFood(string foodId)

ただし、何らかの結果が必要な場合は、メソッドが成功したかどうかを知りたい場合は、メソッドから値を返すこともできます。これは、メソッド シグネチャをもう一度変更することで実行できます。

public bool DeleteMyFood(string foodId)

あなたのコメントに基づいて正しく理解している場合は、イベント ハンドラーを次のように変更します。

public void listBox1_SelectionChanged(object sender,
                                    System.Windows.Controls.SelectionChangedEventArgs e)
{
    if (e.AddedItems.Count > 0)
    {
        var c_id = (e.AddedItems[0] as Foodlist).C_ID;
        string listboxid = c_id.ToString();
        DeleteMyFood(listboxid);
    }
}

これには、メソッドがDeleteMyFood文字列型のパラメーターを受け入れる必要があるため、それも変更する必要があります。

public void deletemyfood(string foodId)
{
    using (FoodDataContext context = new FoodDataContext(Con_String))
    {
        string listboxindex = listboxid;
        IQueryable<FoodViewModel> foodQuery = from c in context.FoodTable where c.C_ID.ToString() == foodId select c;
        // .. rest of code here ..
    }
}
于 2012-07-03T14:01:28.643 に答える