こんにちは。WPF を使用していくつかのコントロールを作成しています。現在、Rectangle と 2 つのラベルを持つスタック パネルで構成される単純なコントロールをテストしています。ドラッグ アンド ドロップ操作のサンプルhttp://msdn.microsoft.com/en-us/library/hh144799.aspxに従いました。これにより、コントロールをドラッグしてその情報 (色) を取得し、別のコントロールにドロップできます。同じことをしたいのですが、今回は色をドロップする代わりに、ラベルのテキストをドロップしたいと思います。たとえば、最初のコントロールには「Channel」と「Type」の 2 つのラベルがあるため、D&D で 2 番目のコントロールのラベルを置き換えて、その情報を「Channel x」または「type x」に変更する必要があります。
最初のコントロール:
<UserControl x:Class="BxCtrl"
.......
.....
AllowDrop="True">
<Grid Width="150" Height="150">
<Rectangle x:Name="Box" Fill="gray" MouseMove="Box_MouseMove" RadiusX="8" RadiusY="8" Grid.Row="0" />
<StackPanel>
<Label Content="Channel" Width="auto" Height="28.093" Margin="25,15,67.133,15" Name="label"/>
<Label Content="Type" Width="42.933" Height="28.093" Margin="25,20,0,20" HorizontalAlignment="Left" Name="label1"/>
</StackPanel>
2つ目はまったく同じ
<UserControl
...
...
x:Class BxCtrl1
AllowDrop="True"
<Grid Width="150" Height="150">
<Rectangle x:Name="Box1" Fill="#FFCABFD5" RadiusX="8" RadiusY="8" MouseMove="Box1_MouseMove" Tag="hoola" />
<StackPanel HorizontalAlignment="Left" Width="150" Name="StackPanel1">
<Label Content="1" Width="auto" Height="28.093" Margin="25,15,67.133,15" Name="labelBox1"/>
<Label Content="1" Width="42.933" Height="28.093" Margin="25,20,0,20" HorizontalAlignment="Left" Name="label1Box1"/>
</StackPanel>
</Grid>
ドラッグ アンド ドロップ操作のドキュメントによると、dataObject で送信するオブジェクトを作成する必要があるため、ラベルの dataObject を作成する必要があると思いますか?
Private Sub Box_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs)
'TODO: Add event handler implementation here.
MyBase.OnMouseMove(e)
If e.LeftButton = MouseButtonState.Pressed Then
Dim data As New DataObject
data.SetData(DataFormats.StringFormat, Box.Fill.ToString())
data.SetData("Double", Box.Height)
data.SetData("Object", Me)
data.GetText()
DragDrop.DoDragDrop(Me, data, DragDropEffects.Move)
End If
End Sub
GetText() を使用していますが、送信方法がわかりません。ラベル テキストを別のテキストにドロップする方法を知っている人はいますか?