トップ回答者
Silverlight:ドラッグ時のイベントの設定の仕方

質問
回答
-
Grid 中のすべての ToggleButton をチェックするなら、たとえば次のように書けます。
'For Each で先頭から順に操作する For Each Item In grid.Children 'ToggleButton にキャストできるか調べる If TypeOf Item Is ToggleButton Then 'ToggleButton にキャストして、チェック状態にする Dim TB As ToggleButton = CType(Item, ToggleButton) TB.IsChecked = True End If Next
Visual Basic は不慣れなので、もっと上手な書き方があるかもしれませんが。
なかむら(http://d.hatena.ne.jp/griefworker)- 回答としてマーク sakuko 2010年8月23日 0:36
2010年8月19日 12:45
すべての返信
-
ToggleButton をドラッグ&ドロップで移動したい、ということでしょうか?
ToggleButton の MouseLeftButtonDown イベントを使えば、ドラッグ&ドロップで移動可能です。
http://msdn.microsoft.com/ja-jp/library/system.windows.uielement.mouseleftbuttondown(v=VS.95).aspx
ドラッグ&ドロップの実装は下記URLを参考にしてください。
http://msdn.microsoft.com/ja-jp/library/cc189066(VS.95).aspx
Rectangle の例ですが、ToggleButton でも同じです。
なかむら(http://d.hatena.ne.jp/griefworker)2010年8月18日 9:53 -
なかむら様
いつもありがとうございます。
すみません、私の説明不足でした。
今回、範囲選択をして、中に含まれているトグルボタンをチェック状態にする、ということをしたいと思っております。
イメージとしてはエクセルのようなものになります。
そこで、教えていただいたドラッグ&ドロップの方法を元に作成してみました。
このサンプルの中にトグルボタンを置き、Rectangleが動いた範囲内にいるトグルボタンをオン状態にしたいと作成していました。
なので、MouseMove実行時の中で、for文を回し、範囲内にボタンの存在があったらチェックする、というコードを作っております。
考えていたのは
For i As Integer = 0 To Me.grid.Controls.count
If grid.Controls(i) = ToggleButton Then
Me.tog1.IsChecked = True
End If
Nextなんですが、どうにもControlsがメンバではないと言われてしまいます。
これは何か設定が必要なんでしょうか……?
それとも他になにか良い方法があるんでしょうか(゜-゜)
2010年8月19日 9:12 -
grid は System.Windows.Controls.Grid クラスのことでしょうか?
Grid クラスには Controls というプロパティはありません。Grid 内に配置したコントロールは Children プロパティから取得できます。
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.grid_members(v=VS.95).aspx
なかむら(http://d.hatena.ne.jp/griefworker)2010年8月19日 10:10 -
なかむら様
おおお!本当です!取得できました。
なるほど……gridの中身を見てみると、確かにcildrenがありました。
ありがとうございます。
すみません、重ねて質問よろしいでしょうか。。。
先ほど書いたコードの
If grid.children(i) = 【ToggleButton】 Then
Me.ToggleButton.IsChecked = True
End If【】の部分なのですが、型だったのでいれられないようです。
そこでもしglidの中のコントロールが存在する場合、という条件をつけたいときは、どうすればいいでしょうか。
trueにすればいいのかと思ったのですが、うまくいきませんでした……
毎回初歩的な質問で申し訳ありません。
よろしければお願い致します。
2010年8月19日 11:23 -
Grid 中のすべての ToggleButton をチェックするなら、たとえば次のように書けます。
'For Each で先頭から順に操作する For Each Item In grid.Children 'ToggleButton にキャストできるか調べる If TypeOf Item Is ToggleButton Then 'ToggleButton にキャストして、チェック状態にする Dim TB As ToggleButton = CType(Item, ToggleButton) TB.IsChecked = True End If Next
Visual Basic は不慣れなので、もっと上手な書き方があるかもしれませんが。
なかむら(http://d.hatena.ne.jp/griefworker)- 回答としてマーク sakuko 2010年8月23日 0:36
2010年8月19日 12:45