1

我有多个问题,列表框中将有多个用户名和密码...我需要应用程序等待,而帐户在文本框中,然后当文本框清除时,列表框中的下一个帐户可以去下一行..

这是代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Net.Mail;
using System.Net;
using System.Text.RegularExpressions;

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

    private void btnOpenFile_Click(object sender, EventArgs e)
    {
        this.lbAccounts.Items.Clear();
        OpenFileDialog Open = new OpenFileDialog();
        Open.Title = "Select Email List";
        Open.Filter = "Text Document|*.txt|All Files|*.*";
        try
        {
            Open.ShowDialog();
            StreamReader Import = new StreamReader(Convert.ToString(Open.FileName));
            while (Import.Peek() >= 0)
                lbAccounts.Items.Add(Convert.ToString(Import.ReadLine()));

        }
        catch (Exception)
        {

        }
    }

    private void SendTestMail()
    {
        try
        {
            NetworkCredential loginInfo = new NetworkCredential(txtUser.Text, txtPass.Text);
            MailMessage msg = new MailMessage();
            msg.From = new MailAddress(txtUser.Text);
            msg.To.Add(new MailAddress("example@gmail.com"));
            msg.Subject = "Hi, I'm Valid :D";
            msg.Body = txtUser.Text + ":" + txtPass.Text;
            msg.IsBodyHtml = true;
            SmtpClient client = new SmtpClient("smtp.gmail.com");
            client.EnableSsl = true;
            client.UseDefaultCredentials = false;
            client.Credentials = loginInfo;
            client.Send(msg);

            lbGoodAccounts.Items.Add(txtUser.Text + ":" + txtPass.Text);
            txtUser.Clear();
            txtPass.Clear();

        }
        catch (Exception)
        {

            lbFailAccounts.Items.Add(txtUser.Text + ":" + txtPass.Text);
            txtUser.Clear();
            txtPass.Clear();
        }
    }

    private void btnCheck_Click(object sender, EventArgs e)
    {
        SendTestMail();
    }

    private void btnExport_Click(object sender, EventArgs e)
    {
        StreamWriter Write;
        SaveFileDialog Open = new SaveFileDialog();
        try
        {
            Open.Filter = ("Text Document|*.txt|All Files|*.*");
            Open.FileName = ("Good Gmail Accounts");
            Open.ShowDialog();
            Write = new StreamWriter(Open.FileName);
            for (int I = 0; I < lbGoodAccounts.Items.Count; I++)
            {
                Write.WriteLine(Convert.ToString(lbGoodAccounts.Items[I]));
            }
            Write.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(Convert.ToString(ex.Message));
            return;
        }
    }
}

}

4

1 回答 1

3

如果我理解正确,这就是您需要的代码:

 void AccountsListBox_Click (object sender, EventArgs args) 
 {
    if (AccountsListBox.SelectedIndex < 0)
        return;

    if (!string.IsNullOrEmpty(TextBoxName.Text) && !string.IsNullOrEmpty(TextBoxPass.Text)) 
        return; // stop processing if they have some data

    // otherwise get acccount:password, 
    // split it into acc and pass and write them to TextBoxes
    string value = AccountsListBox.Items[AccountsListBox.SelectedIndex];
    string[] values = value.Split(':');
    if (values.Length != 2)
        return;  // wrong format        

    var acc   = values[0];
    var pass  = values[1];

    TextBoxName.Text = acc;
    TextBoxPass.Text = pass;
}

我已经有一段时间没有使用 WinForms,所以如果您发现一些错误,请更正它们:)

有关详细信息,请参阅MSDN ListBox文档。

于 2013-01-05T14:38:54.530 回答