How to know which button was clicked?

3

I have three buttons, one to insert , another to change and one to write .

The record button will work to save data whether it is an insert or a change.

How to identify which button I pressed for the Save button to know if I am recording an insert or a change?

private void button_inserir_Click(object sender, EventArgs e)
{
    this.Text = "Inserir dados";

    textBox_ordenado.ReadOnly = false;
    textBox_ordenado.Enabled = true;
    textBox_ordenado.Focus();

    textBox_subsidios.ReadOnly = false;
    textBox_subsidios.Enabled = true;
    textBox_subsidios.TabStop = true;

    dateTimePicker_data.Enabled = true;
    button_guardar.Visible = true;
}

private void button_alterar_Click(object sender, EventArgs e)
{
    this.Text = "Alterar dados";

    textBox_ordenado.ReadOnly = false;
    textBox_ordenado.Enabled = true;
    textBox_ordenado.Focus();

    textBox_subsidios.ReadOnly = false;
    textBox_subsidios.Enabled = true;
    textBox_subsidios.TabStop = true;

    dateTimePicker_data.Enabled = true;
    button_guardar.Visible = true;
}

private void button_guardar_Click(object sender, EventArgs e)
{
    if (button_inserir) // Não sei como fazer
    {
        // executa uma stored Procedure (inserir)
    }
    else if (button_alterar) // Não sei como fazer
    {
        // executa outra stored Procedure (alterar)
    }       
}
    
asked by anonymous 16.08.2016 / 16:28

2 answers

2

This will depend on how the Save button is invoked, if you call it like this:

private void button_inserir_Click(object sender, EventArgs e)
{
    // ...
    button_guardar_Click(sender, e);
}

You may know who invoked the button like this:

private void button_guardar_Click(object sender, EventArgs e)
{
   Button btn = sender as Button;
   MessageBox.Show(btn.Name); // button_inserir

   // if (btn.Name == "button_inserir") { }
}

Another way is to use a variable to save a value when one of the buttons is clicked, in the Save button you check the value of the variable and execute the procedures according to the chosen method. >

// 0: Nenhum botão clicado / 1: botão inserir clicado / 2: botão alterar clicado
static int metodoGuardar = 0; 
// ...

private void button_inserir_Click(object sender, EventArgs e)
{
   // Códigos aqui...
   metodoGuardar = 1;
}

private void button_alterar_Click(object sender, EventArgs e)
{
   // Códigos aqui...
   metodoGuardar = 2
}

private void button_guardar_Click(object sender, EventArgs e)
{
   if (metodoGuardar == 1)
   {
      // Botão "inserir" foi clicado
   } else if (metodoGuardar == 2)
   {
      // Botão "alterar" foi clicado
   } else
   {
      // Nenhum dos botões "inserir" e "alterar" foram clicados
   }
}

Related: Getting information from object sender

    
16.08.2016 / 16:52
1

Goodevening,@DiogoSousa.

IuseconstantsandthroughthemIcheckinsidetheRecordbuttonorEffectiveifitisanINSERTorUPDATEcommand.

Ialsouseapropertythatloadswiththecontentsoftheconstantwhenthebuttonisclicked;

Examples:

//ConstantesprivateconststringstrConstInseri="Inseri";
private const string strConstAltera = "Altera";
private const string strConstCancela = "Cancela";
private const string strConstConsulta = "Consulta";
private const string strConstEfetiva = "Efetiva";

// Atributos
private static string strTextBotao;

// Propriedade é utilizada para, manipular a propriedade "Text" dos botões
public static string StrTextBotao
{
    get { return strTextBotao; }
    private set { strTextBotao = value; }
}

// Botão Inseri
private void btnInseri_Click(object sender, EventArgs e)
{
    txtCodInstrucao.Clear();
    txtConteudo.Clear();

    // É setado um valor na propriedade e esse valor será utilizado para distinguir as operações na hora de efetivar no evento click do "botão - Efetiva"
    StrTextBotao = strConstInseri;

    HabDes(StrTextBotao);
}

// Botão Altera
private void btnAltera_Click(object sender, EventArgs e)
{
    if (dgvCodRejeicao.Rows.Count > 0)
    {
        if (dgvCodRejeicao.SelectedRows.Count > 0)
        {
            txtCodInstrucao.Text = dgvCodRejeicao["colCodInstrucao", dgvCodRejeicao.CurrentRow.Index].Value.ToString();
            txtConteudo.Text = dgvCodRejeicao["colConteudo", dgvCodRejeicao.CurrentRow.Index].Value.ToString();

            StrTextBotao = strConstAltera;

            HabDes(StrTextBotao);
        }
    }
    else
    {
        MessageBox.Show("Selecione um registro na tabela para fazer a alteração.", "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        return;
    }
}

// Botão Efetiva
private void btnEfetiva_Click(object sender, EventArgs e)
{
    Cursor.Current = Cursors.WaitCursor;

    #region INSERI

    if (StrTextBotao == strConstInseri)
    {
        if (MessageBox.Show("Deseja realmente inserir um novo registro ?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
        {
            txtCodInstrucao.Focus();
            return;
        }

        if (ValidaCampos())
        {  
           // Se a validação estiver OK é implementado o código de INSERT
        }
   }
   #endregion

   #region ALTERA

   else if (StrTextBotao == strConstAltera)
   {
        if (MessageBox.Show("Deseja realmente atualizar as informações ?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
        {
            txtConteudo.Focus();
            return;
        }

        if (ValidaCampos())
        { 
           // Se a validação estiver OK é implementado o código de ALTERA
        }
   }
   #endregion

   Cursor.Current = Cursors.Default;
}

/// <summary>
/// Método que habilita ou desabilita os campos de acordo com o parâmetro de entrada
/// </summary>
/// <param name="pstrTextBtn"></param>
private void HabDes(string pstrTextBtn)
{
    if (strConstInseri == pstrTextBtn) // Inseri
    {
            txtCodInstrucao.Enabled = true;
            txtConteudo.Enabled = true;
            txtCodInstrucao.Focus();

            btnInseri.Enabled = false;
            btnAltera.Enabled = false;
            btnConsulta.Enabled = false;
            btnCancela.Enabled = true;
            btnEfetiva.Enabled = true;
    }
    else if (strConstCancela == pstrTextBtn) // Cancela
    {
            txtCodInstrucao.Enabled = false;
            txtConteudo.Enabled = false;

            btnInseri.Enabled = true;
            btnAltera.Enabled = true;
            btnConsulta.Enabled = true;
            btnCancela.Enabled = false;
            btnEfetiva.Enabled = false;
    }
    else if (strConstAltera == pstrTextBtn) // Altera
    {
            txtCodInstrucao.Enabled = false;
            txtConteudo.Enabled = true;
            txtConteudo.Focus();

            btnInseri.Enabled = false;
            btnAltera.Enabled = false;
            btnConsulta.Enabled = false;
            btnCancela.Enabled = true;
            btnEfetiva.Enabled = true;
    }
    else if (strConstConsulta == pstrTextBtn) // Consulta
    {
            txtCodInstrucao.Enabled = false;
            txtConteudo.Enabled = false;

            btnInseri.Enabled = true;
            btnAltera.Enabled = true;
            btnConsulta.Enabled = true;
            btnCancela.Enabled = true;
            btnEfetiva.Enabled = false;
    }
    else if (StrTextBotao == pstrTextBtn) // Efetiva
    {
            txtCodInstrucao.Enabled = false;
            txtConteudo.Enabled = false;

            btnInseri.Enabled = true;
            btnAltera.Enabled = true;
            btnConsulta.Enabled = true;
            btnCancela.Enabled = true;
            btnEfetiva.Enabled = false;
    }
}
    
17.08.2016 / 00:39