拖拽删除标签文本Vb.net

时间:2013-09-20 16:44:21

标签: wpf vb.net drag-and-drop

大家好:iam使用WPF创建一些控件,现在我只是使用一个简单的控件进行测试,该控件包含一个Rectangle和一个带有两个标签的Stack Panel。 我按照拖放操作示例http://msdn.microsoft.com/en-us/library/hh144799.aspx,它允许拖动控件以获取其信息(颜色)并将其放到另一个。 我想做同样的事情,但在这个时间而不是丢弃颜色我想删除标签的文本。 例如,在第一个控件中我有两个标签:“频道”和“类型”,所以我希望用D&amp; D替换第二个控件的标签,将其信息更改为“频道x”或“类型x”< / p>

第一控制:

<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>

和第二个完全相同的

<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(),但我不知道如何发送它,任何人都知道如何将标签文本放入另一个??

1 个答案:

答案 0 :(得分:0)

您所做的就是将您的信息填充到DataObject中,以便以后在处理drop时甚至在其他控件中进行重新处理。请继续阅读本教程,您将看到他们实现了一个“OnDrop”事件,这里的关键是您填写的数据出现在

byval e As System.Windows.DragEventArgs
...
Dim dataString As String = e.Data.GetData(DataFormats.StringFormat)