0

こんにちは。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() を使用していますが、送信方法がわかりません。ラベル テキストを別のテキストにドロップする方法を知っている人はいますか?

4

1 に答える 1

0

あなたが行ったことは、他のコントロールでもドロップを処理するときに後で取得できるように、DataObject に情報を詰め込むことです。チュートリアルを読み進めると、「OnDrop」イベントが実装されていることがわかります。ここで重要なのは、そこに入力したデータが出力されることです。

byval e As System.Windows.DragEventArgs
...
Dim dataString As String = e.Data.GetData(DataFormats.StringFormat)
于 2013-09-20T17:51:39.563 に答える