Аргумент c # вне диапазона был обработан из-за SelectedIndex - PullRequest
1 голос
/ 02 декабря 2011

Ошибка «Аргумент вне диапазона был обработан» возникает при нажатии кнопки из-за отсутствия номера или если такой индексный номер подключенного клиента не выбран.Показать ошибку с этим кодом:

workerSocket = (Socket)m_workerSocketList[comboBox1.SelectedIndex];

Я хочу дать сообщение с надписью «Пожалуйста, выберите правильный номер».что должно быть закодировано для обработки этой ошибки?

вот код:

void indmsgbtn_Click(object sender, EventArgs e)
{
    string msg = richtxtindmsg.Text;
    msg = "Private Admin Message: " + msg + "\n";
    byte[] byData = System.Text.Encoding.ASCII.GetBytes(msg);
    Socket workerSocket = null;
    // for (int i = 0; i < m_workerSocketList.Count; i++)

    workerSocket = (Socket)m_workerSocketList[comboBox1.SelectedIndex];

    if (workerSocket != null)
    {
        if (workerSocket.Connected)
        {
            workerSocket.Send(byData);
        }
    }       
}

Ответы [ 2 ]

2 голосов
/ 03 декабря 2011

Перед вызовом workerSocket = (Socket)m_workerSocketList[comboBox1.SelectedIndex]; необходимо проверить значение comboBox1.SelectedIndex. Если он выходит за пределы допустимого диапазона, отобразите сообщение об ошибке; только если он находится в диапазоне (>= 0 и < m_workerSocketList.Count), будет безопасно использовать его в качестве индекса для m_workerSocketList.

0 голосов
/ 03 декабря 2011

Можете ли вы попробовать:

if (comboBox1.SelectedIndex > -1 && comboBox1.SelectedIndex < m_workerSocketList.Count)
{
    workerSocket = (Socket)m_workerSocketList[comboBox1.SelectedIndex];
}
else
{
    //message
}
...