拖放标签文本 Vb.net



大家好:我正在使用WPF创建一些控件,现在我只是使用一个简单的控件进行测试,该控件由一个矩形和一个带有两个标签的堆栈面板组成。我遵循了拖放操作示例 http://msdn.microsoft.com/en-us/library/hh144799.aspx,它允许拖动控件以获取其信息(颜色)并将其拖放到另一个控件。我想做同样的事情,但这次不是删除颜色,而是删除标签的文本。例如,在第一个控件中,我有两个标签:"通道"和"类型",所以我希望用 D&D 替换第二个控件的标签以将其信息更改为"通道 x"或"类型 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>

第二个完全相同

<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 一起发送的对象,所以我想我必须为标签创建一个数据对象?

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

您所做的是将您的信息填充到 DataObject 中,以便以后处理丢弃时即使在其他控件中也可以使用它。 继续阅读本教程,您将看到他们实现了"OnDrop"事件,这里的关键是您在那里输入的数据出现在

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

最新更新