2017-07-17 10 views
1

プログラムでは、プログラムでPerformClickでコードが有効になっているButtonを(プログラムで)配置します。そのボタンはインターフェイスで非表示にする必要があります。プログラムの初めからfalseですが、イベントのクリックに対するアクションは実行されませんが、visible = trueを設定すると、実際にアクションが実行されます。問題のアイデアですか?アクションを実行するボタンが表示されないfalseが動作しない

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:コンボボックスのDataSetの値を "再読み込み" します:dsDescripciones。

プログラムのbeginnigからvisibleプロパティはfalseですが、visible = trueを設定しようとしていて、PerformClick()メソッドを変更する直前に同じ値を設定しようとしています。

しかし、最初からvisible = trueを設定していれば、それはそのように動作します。

+1

あなたは私たちにいくつかのコードを示してもらえますか? – iehrlich

+0

また、winformsとwpfを指定する必要があります(これを行うにはタグを使用できます)。 –

答えて

0

表示されていない、または有効になっていないボタンをクリックすると、プログラムでクリックしても何も起こりません。それはハックのビットですが、ここで私の作品回避策は、です:

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

ありがとう、それは動作します。 –

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();   
} 
関連する問題