Gabungkan Item yang dipilih ListBox

Saya memiliki listBox di WinForms .NET 4.5. Saya terus mendapatkan pengecualian 'NULL' saat dimasukkan dan saya tidak tahu mengapa. Saya memiliki TWEAK sebagai .dbml dari tbl_Tweak lengkap dengan kumpulan datanya. Saya kehilangan sesuatu di suatu tempat dan gagal menemukan apa atau di mana. Saya berharap pandangan yang segar dan berpengalaman dapat memberikan pencerahan di sini. Inilah kode yang relevan.

Metode Sisipkan:

public void InsertOrUpdateTweak(string recipename, string batchID, DateTime dtpTweak, int tempTweak, double specificGravityTweak, string tweakBox, string cbEventItems, int r_ID, string arrr)
        {
            TWEAKDataContext tdc = new TWEAKDataContext();
            if (dirtyTweak == true)
                try
               {
                GetEvents();

                tbl_Tweak log = new tbl_Tweak();
                log.recipename = recipeName;
                log.batchID = batchID;
                log.dtpTweak = DateTime.Now;
                log.tempTweak = tempTweak;
                log.specificGravityTweak = specificGravityTweak;
                log.tweakBox = tweakBox;
                log.cbEventItems = cbEventItems;

                tdc.tbl_Tweak.InsertOnSubmit(log);
                tdc.SubmitChanges();
            }
            catch (Exception ex)
            {
                throw ex;  //<== This is where it breaks
            }
            try
            {
                MessageBox.Show("You have not loaded and/or saved the current recipe data");
            }
                finally
                {
                    tdc.SubmitChanges();
                }
            }
    }

Metode GetEvents tempat saya mencoba memasukkan item yang dipilih dari kotak daftar ke dalam string:

public string GetEvents()
{
        string[] arrr = new string[listBoxEvents.Items.Count];
        listBoxEvents.SelectedItems.CopyTo(arrr, 0);
        cbEventItems = string.Join("-", arrr);
        return cbEventItems;
}

Saya telah mencari SO dan menemukan beberapa variasi yang saya tunjukkan di bawah ini:

public string[] GetEvents()
{
String[] cbEventItems = new String[listBoxEvents.SelectedItems.Count];
for (int i = 0; i < totalEvents; i++)
{
   var arrr = String.Join(Environment.NewLine, listBoxEvents.SelectedItems.Cast<string>());
}
return arrr;
}

Dan...

public string[] GetEvents()
{
string[] arrr = new string[listBoxEvents.SelectedItems.Count];
for (int i = 0; i < listBoxEvents.SelectedItems.Count; i++)
arrr[i] = listBoxEvents.SelectedItems[i].ToString();

return arrr;
}

dan juga...

public string GetEvents()
{
    List<string> arrr = new List<string>(listBoxEvents.SelectedItems.Count);
    foreach (string listitem in listBoxEvents.SelectedItems)
    {
        cbEventItems = string.Join("-", arrr);
    }
    return cbEventItems;
}

person DV8DUG    schedule 24.05.2016    source sumber
comment
Sepertinya mungkin ada kebingungan karena param metode dan variabel bidang keduanya disebut cbEventItems. String tidak dapat diubah yang mungkin juga menyebabkan masalah. Coba hapus parameter cbEventItems dari tanda tangan metode InsertOrUpdateTweak dan cobalah   -  person RobCroll    schedule 25.05.2016
comment
Tambahkan jawaban formal dan saya akan memberi +1 pada Anda. Terima kasih banyak. Saya merasa seperti seorang n00b.   -  person DV8DUG    schedule 25.05.2016


Jawaban (1)


Sepertinya mungkin ada kebingungan karena param metode dan variabel bidang keduanya disebut cbEventItems. String tidak dapat diubah yang mungkin juga menyebabkan masalah. Coba hapus parameter cbEventItems dari tanda tangan metode InsertOrUpdateTweak dan cobalah.

Juga karena metode GetEvents mengembalikan string, saya akan membuat variabel metode dan kemudian menggunakannya untuk membuat kode lebih mudah dibaca.

public void InsertOrUpdateTweak(string recipename, string batchID, DateTime dtpTweak, int tempTweak, double specificGravityTweak, string tweakBox, int r_ID, string arrr)
        {
             ...
             string eventItems = GetEvents();
             ...
             log.cbEventItems = eventItems;
             ...
        }
person RobCroll    schedule 25.05.2016