В winform кнопку нужно нажать дважды для стрельбы - PullRequest
1 голос
/ 03 декабря 2010

У меня есть кнопка для события click, для которого я вызываю функцию. Я установил свойство кнопки accept для этой кнопки. Но это событие не запускается при одном щелчке.

 private void btnConnect_Click(object sender, EventArgs e)
 {
        try
        {
            //Function call for validating the textboxes entry
            ValidateForm();

            if(lblMessage.Text != string.Empty)
            {
                //Function call for binding the dropdown with all DB names 
                BindDBDropDown();

                //Function call for binding the operation names in dropdown 
                SetOperationDropDown();
            }
            else
            {
                //Else give the error message to user
                lblMessage.Text = "Invalid Credentials";
            }
        }
        catch(Exception ex)
        {
            //All the exceptions are handled and written in the EventLog.
            EventLog log = new EventLog("Application");
            log.Source = "MFDBAnalyser";
            log.WriteEntry(ex.Message);
        }
    }


public void BindDBDropDown()
{

        SqlConnectionStringBuilder objConnectionString = new SqlConnectionStringBuilder();
        objConnectionString.DataSource = txtHost.Text;
        objConnectionString.UserID = txtUsername.Text;
        objConnectionString.Password = txtPassword.Text;

        SqlConnection sConnection = new SqlConnection(objConnectionString.ConnectionString);

        //If connected then give this message to user
        lblMessage.Visible = true;
        lblMessage.Text = "You are connected to the SQL Server....";

        try
        {
            //To Open the connection.
            sConnection.Open();

            //Query to select the list of databases.
            string selectDatabaseNames = @"SELECT 
                                                NAME 
                                             FROM 
                                                [MASTER]..[SYSDATABASES]";

            //Create the command object
            SqlCommand sCommand = new SqlCommand(selectDatabaseNames, sConnection);

            //Create the data set 
            DataSet sDataset = new DataSet("master..sysdatabases");

            //Create the dataadapter object
            SqlDataAdapter sDataAdapter = new SqlDataAdapter(selectDatabaseNames, sConnection);
            sDataAdapter.TableMappings.Add("Table", "master..sysdatabases");

            //Fill the dataset
            sDataAdapter.Fill(sDataset);

            //Bind the database names in combobox
            DataViewManager dsv = sDataset.DefaultViewManager;

            //Provides the master mapping between the sourcr table and system.data.datatable
            cmbDatabases.DataSource = sDataset.Tables["master..sysdatabases"];
            cmbDatabases.DisplayMember = "NAME";
            cmbDatabases.ValueMember = ("NAME");
        }
        catch(Exception ex)
        {
            //All the exceptions are handled and written in the EventLog.
            EventLog logException = new EventLog("Application");
            logException.Source = "MFDBAnalyser";
            logException.WriteEntry(ex.Message);
            MessageBox.Show ("Login Failed!!", "Error Occured");
        }
        finally
        {
            //If connection is not closed then close the connection
            if(sConnection.State != ConnectionState.Closed)
            {
                sConnection.Close();
            }
        }
    }

Кто-нибудь может мне помочь ??

1 Ответ

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

Э-э, при первом щелчке, содержит ли lblMessage какой-либо текст?

Поскольку, если нет, то при первом запуске он провалит условный тест и вставитстрока «Неверные учетные данные» в метку.Затем при втором запуске он пройдет условный тест и вызовет метод BindDBDropDown, как и ожидалось.

В частности, этот раздел вашего кода:

if(lblMessage.Text != string.Empty)
{
    //Function call for binding the dropdown with all DB names 
    BindDBDropDown();

    //Function call for binding the operation names in dropdown 
    SetOperationDropDown();
}
else
{
    //Else give the error message to user
    lblMessage.Text = "Invalid Credentials";
}

Я предполагаю, что вы либо пытаетесь проверить, что содержимое текстового поля, в которое пользователь ввел свои учетные данные, не являются пустыми, либо вы хотите убедиться, что сообщение об ошибке в данный момент не отображается в lblMessage.Убедитесь, что ваш код точно отражает ваши намерения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...