嗯,我有这种情况,在一个程序中我放了一个按钮,其代码用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放在那里就行了。
答案 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();
}