【问题标题】:Drag & Drop label text Vb.net拖放标签文本 Vb.net
【发布时间】:2013-09-20 16:44:21
【问题描述】:

大家好:我正在使用 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 发送的对象,所以我想我必须为标签创建一个 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(),但我不知道如何发送它,有人知道如何将标签文本放入另一个标签文本吗?。

【问题讨论】:

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


    【解决方案1】:

    您所做的是将您的信息填充到 DataObject 中,以便稍后在您处理删除时甚至在另一个控件中也可以获取它。继续阅读本教程,您将看到他们实现了“OnDrop”事件,这里的关键是您在其中获得的数据来自于

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

    【讨论】:

    • 是的“onDrop”我有:if e.Data.GetDataPresent(DataFormats.StringFormat) Then Dim dataString as String= e.Data.GetData(DataFormats.StringFormat) ..more code End If e.handled=true end sub 但我不知道如何传递或接收标签信息,我需要实例化什么或如何做?
    • (在 mousemove 中) data.SetData("Label1_Content", label1.content) (在 OnDrop 中)? = e.Data.GetData("Label1_Content")
    猜你喜欢
    • 1970-01-01
    • 2011-09-12
    • 2014-03-29
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多