0

プログラムに SelectedItems を表示させようとするたびに、「system.windows.forms.listbox+selectedobjectcollection」が表示されます。コンボボックスから emailBankListBox1 にテキストを取得できますが、emailBanklistBox1 から listBox1 にホップしようとすると、上記のテキストが取得されます。どんな助けでも大歓迎です。

private void addButton1_Click(object sender, EventArgs e)
{
    /*
    int selectIndexInt = -1;

    selectIndexInt = recipientComboBox.SelectedIndex;

    if (selectIndexInt != -1)
    {
        emailBankListBox1.Items.Add(recipientComboBox.SelectedItem += ",");
    }

    else
    {

    }
    */
    if (recipientComboBox.Text == "")
    {
        MessageBox.Show("Please enter a Recipient Email");
    }
    else
    {
        emailBankListBox1.Items.Add(recipientComboBox.Text += ",");
    }
    for (int i = 0; i < emailBankListBox1.Items.Count; i++)
    {
        emailBankListBox1.SetSelected(i, true);
    }
}

private void removeButton2_Click(object sender, EventArgs e)
{
    int selectIndexInt = -1;

    selectIndexInt = emailBankListBox1.SelectedIndex;
    if (selectIndexInt != -1)
    {
        emailBankListBox1.Items.RemoveAt(selectIndexInt);
    }

    else
    {
        MessageBox.Show("Select a name from the 'Recipients to recieve email' List");
    }
}

private void button5_Click(object sender, EventArgs e)
{
    this.Close();
}

private void button4_Click(object sender, EventArgs e)
{

    /* 
    for (int i = 0; i < emailBankListBox1.Items.Count; i++)
    {
        emailBankListBox1.SetSelected(i, true);
    }
    */

    var selectedString = emailBankListBox1.SelectedItems.ToString();
    listBox1.Items.Add(selectedString);




    /*
    //Email sending
    MailMessage myMail = new MailMessage();

    myMail.To.Add(new MailAddress(emailBankListBox1.SelectedItems.ToString()));
    myMail.From = new MailAddress("******m", "******");
    myMail.Subject = subjectTextBox.Text;
    myMail.Body = bodyTextBox.Text;

    SmtpClient smtp = new SmtpClient("smtp.gmail.com");
    smtp.Port = 587;
    smtp.EnableSsl = true;
    smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtp.UseDefaultCredentials = false;
    smtp.Credentials = new NetworkCredential("*********", "*****");

    try
    {
        smtp.Send(myMail);
        MessageBox.Show("Message Sent");
    }   
    catch
    {
        MessageBox.Show("Cannot send this message");

    }
        */
}

private void recipientComboBox_SelectedValueChanged(object sender, EventArgs e)
{

    int selectIndexInt = -1;

    selectIndexInt = recipientComboBox.SelectedIndex;

    if (selectIndexInt != -1)
    {
        emailBankListBox1.Items.Add(recipientComboBox.SelectedItem += ",");
    }

    else
    {
        if (recipientComboBox.Text == "")
        {
            MessageBox.Show("Please type or select a recipient E-mail");
        }
    }
    for (int i = 0; i < emailBankListBox1.Items.Count; i++)
    {
        emailBankListBox1.SetSelected(i, true);
    }

}
4

2 に答える 2

1

SelectedItemsはコレクションであり、アイテムではありません。

あなたはこれをしているはずです

var selItem = emailBankListBox1.SelectedItem;
var selectedString=selItem.ToString();
var idx = emailBankListBox1.Items.IndexOf(selItem);
于 2012-11-04T06:27:29.937 に答える
0

ToStringあなたは本質的にコレクションを呼び出しています。選択した各アイテムを個別のリストボックスに追加する場合は、次のようにします。

foreach(var item in emailBankListBox1.SelectedItems)
    listBox1.Items.Add(item.ToString());

Linq の場合は、次のことを直接実行できます。

listBox1.Items.AddRange(emailBankListBox1.SelectedItems.OfType<string>());

内部のオブジェクトemailBankListBox1が単なる文字列でない場合は、display メンバー プロパティを設定する必要があります。listbox1

于 2012-11-04T07:48:11.243 に答える