动作执行按钮可见false不起作用

时间:2017-07-17 21:21:46

标签: c# winforms visual-studio button

嗯,我有这种情况,在一个程序中我放了一个按钮,其代码用PerformClick(编程)激活,该按钮必须在界面中不可见,所以我把值设置为visible = false,因为程序开始但是对事件点击的操作没有执行,但是如果我把visible = true,实际执行的操作,问题的任何想法?

    private void dataGridView1_DoubleClick(object sender, EventArgs e)
    {
       if(_datosDe == "Insumos")
       {         
                _btnRecargarInsumos.PerformClick();      
       }           
        this.Close();          
    }

_btnRecargarInsumos:是按钮,实际上是在另一个表单中执行的。

    private void btnRecargarInsumos_Click(object sender, EventArgs e)
    {     
        objGeneral.regresaDescripciones(ref dsDescripciones);
        cbACDescripcion.DataSource = dsDescripciones.Tables[0];
        cbACDescripcion.DisplayMember = "Nombre";
        cbACDescripcion.ValueMember = "ID";
        cbACDescripcion.SelectedIndex = -1;
        cbACDescripcion.Text = "";
    }

cbACDescripcion:将重新加载的#Combobox"使用DataSet的值:dsDescripciones。

自程序的beginnig以来,属性visible是false,但我也尝试设置visible = true,就在方法PerformClick()改变它之前,但它是相同的。

但是如果我从一开始就把visible = true放在那里就行了。

2 个答案:

答案 0 :(得分:0)

如果单击一个不可见或未启用的按钮,即使您以编程方式单击它也不会发生任何事情。这是一个适用于我的解决方法,虽然它有点像黑客:

_btnRecargarInsumos.SuspendLayout();
_btnRecargarInsumos.Visible = true;
_btnRecargarInsumos.PerformClick();
_btnRecargarInsumos.Visible = false;
_btnRecargarInsumos.ResumeLayout();

答案 1 :(得分:0)

为什么不把代码放在一个单独的方法中呢? 例如:

private StuffToDoAtClick()
{
    objGeneral.regresaDescripciones(ref dsDescripciones);
    cbACDescripcion.DataSource = dsDescripciones.Tables[0];
    cbACDescripcion.DisplayMember = "Nombre";
    cbACDescripcion.ValueMember = "ID";
    cbACDescripcion.SelectedIndex = -1;
    cbACDescripcion.Text = "";
}

//你的Button.Click()代码//

private void btnRecargarInsumos_Click(object sender, EventArgs e)
{
    StuffToDoAtClick()
}

//您的Datagridview代码//

private void dataGridView1_DoubleClick(object sender, EventArgs e)
{
   if(_datosDe == "Insumos")
   {         
            StuffToDoAtClick();      
   }           
    this.Close();          
}