Evento Button_click generato due volte

giovedì 07 agosto 2008 - 15.47

gonzalezh Profilo | Junior Member

Salve a tutti,

Io ho un evento Button_Click che viene generato quando l'utente fa click in un controllo Office.CommandBarButton ma mi viene generato due volte, cioè la win form si apre quando l'utente fa click sulla voce di menu e se l'utente fa click su Chiudi (oppure su Visualizza) il form si chiude e si riapre nuovamente (in tutto 3 volte anzichè 1 volta). Debuggando vedo che il flusso dell'applicazione va nuovamente ad eseguire l'evento Button_Click.
Cosa può essere successo??

Grazie in anticipo,

H.

paoval72 Profilo | Senior Member

Ciao, puoi postare un po' di codice?

PV

gonzalezh Profilo | Junior Member

Certo!
questo è il codice del click dell'item del menu

private void Button_Click(Office.CommandBarButton Ctrl, ref bool CancelDefault)
{
try
{
if (Sintesi.tableName != Ctrl.Caption) //questo if l'ho aggiunto per evitare che venga eseguito più volte il metodo
{
tableName = Ctrl.Caption;
mySynth = new Sintesi();
mySynth.Visible = false;
mySynth.Text += " " + tableName;
Sintesi.con = GetConnectionString(Ctrl);
Sintesi.ermasDb = GetErmasDbName(Sintesi.con);
try
{
if (mySynth.ShowDialog() == DialogResult.OK)
{
(Globals.ThisAddIn.Application.ActiveSheet as Excel.Worksheet).Cells.Clear();
Globals.ThisAddIn.Application.Cursor = Microsoft.Office.Interop.Excel.XlMousePointer.xlWait;
this.Application.ScreenUpdating = false;
ExportToExcel();
(this.Application.ActiveSheet as Excel.Worksheet).Name = tableName;
}
}
finally
{
mySynth.Dispose();
this.Application.ScreenUpdating = true;
Globals.ThisAddIn.Application.Cursor = Microsoft.Office.Interop.Excel.XlMousePointer.xlDefault;
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

quest'è il Load della Win Form

private void Sintesi_Load(object sender, EventArgs e)
{
tableName = Globals.ThisAddIn.tableName;
FillControls();
DataColumn dc = new DataColumn("FieldToView");
dc.DataType = System.Type.GetType("System.String");
dc.DefaultValue = "DESC";
ds.Tables[0].Columns.Add(dc);

}

private void FillControls()
{
ds = null;
SqlConnection cn = null;
string sqlExpression = " select distinct ordinal_position, column_name, data_type " +
" from information_Schema.columns " +
" where table_name = '" + tableName + "' " +
" order by ordinal_position ; " +
" SELECT INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME, T_SYS_DBKEY_ANAG.DESCR, T_SYS_DBKEY_ANAG.DOMN_TYPE " +
" FROM INFORMATION_SCHEMA.COLUMNS, T_SYS_DBKEY_ANAG " +
" WHERE INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME LIKE '%' + T_SYS_DBKEY_ANAG.UCODE + '%' AND " +
" INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = '" + tableName + "'";

string sqlFiltri = "select distinct uid_pubb, uid_ses from " + tableName + " order by uid_pubb";
try
{
lstBxCampiDisponibili.Items.Clear();
lstBxCampiVisualizzare.Items.Clear();

cn = new SqlConnection(con);
ds = ReadFromDB(sqlExpression, cn);
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string item = ds.Tables[0].Rows[i]["column_Name"].ToString();
lstBxCampiDisponibili.Items.Add(item);

}
this.lstBxCampiDisponibili.Update();

cn = new SqlConnection(con);
DataSet dsFiltri = ReadFromDB(sqlFiltri, cn);
cboPubb.DataSource = dsFiltri.Tables[0];
cboPubb.ValueMember = dsFiltri.Tables[0].Columns["uid_pubb"].ToString();
cboPubb.DisplayMember = dsFiltri.Tables[0].Columns["uid_pubb"].ToString();

cboSess.DataSource = dsFiltri.Tables[0];
cboSess.ValueMember = dsFiltri.Tables[0].Columns["uid_ses"].ToString();
cboSess.DisplayMember = dsFiltri.Tables[0].Columns["uid_ses"].ToString();

}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5