2010-12-08 12 views
0

私は自分の問題を質問したかった。 ボタン1、ボタン2、ボタン3の3つのボタンを作ります。一つのボタンをクリックすると、ボタンの色が変わります。私はこのようなコードを使用しています。ボタンを制御する

For Each ctrl As Control In frm.Controls 
    If ctrl = button Then 
     ctrl.backcolor = color.red 
    End If  
Next 

まだエラーがあります。私

+1

エラーの内容を正確に記述する必要があります。 – gideon

答えて

1

を助けてください右のコードは次のようになります。コードは以下の

For Each ctrl As Control In frm.Controls 
    If TypeOf ctrl Is Button Then 
     DirectCast(ctrl,Button).BackColor = Color.Red 
    End If 
Next 
+0

ハハ私はC男と私はそれを見たことがないだろう! = P BASICの構文はちょうど私の目に合っていません! – gideon

+2

ボタンのプロパティ( 'BackColor'など)を使う前に' ctrl'を 'Button'に_cast_する必要があると思います。 – Oded

+0

@Oded:ボタン固有のプロパティを割り当てる前に 'ctrl'を' Button'にキャストする必要があります( 'DirectCast(ctrl、Button)'を使って)。しかし、 'BackColor'は' Control'の継承されたプロパティなので、これはコンパイルする必要があります。 –

0

用途:

For Each ctrl As Control In Controls 
     If TypeOf ctrl Is Button Then 
      ctrl.BackColor = Color.Red 
     End If 
    Next 

あなたは間違って何をしているがタイプとインスタンスを比較しています。あなたがする必要があるのは、あるインスタンスのTypeをもう1つのTypeと比較することです。

+0

ボタンのプロパティ(BackColorなど)を使用する前に 'Ctrl 'を' Button'にキャストする必要があると思います。 – Oded

+0

いいえ、 'BackColor'は' Button'クラスがオーバーライドする 'Control'クラスのプロパティです。多態性: – decyclone

+0

私の主張は、['Control'](http://msdn.microsoft.com/en-us/library/system.web.ui.control.aspx)に' BackColor'プロパティがないことです。しかし、「WebControl」はそうです。 – Oded

0

これは最善の方法ではありません。以下のオプションを見てください。

Sub buttons_click(sender as Object, e as event) Handles button1.Click, 
                 _ button2.Click, 
                 _ button3.Click 
    sender.backcolor = color.red 
End Sub 

申し訳ありませんが、構文が少しオフになっていると、私はVBを行ってからしばらくです。

これが役に立ちます。

+0

ボタンのプロパティ( 'BackColor'など)を使用する前に' sender'を 'Button'にキャストする必要があると思います。 – Oded

+0

ちょうどそれをテストし、それは動作します。おそらくそれをキャストするのは安全でしょう。 –

関連する問題