繁体   English   中英

如何在WPF中使用从列表框到文本框的拖放操作替换文本?

[英]How to replace text using drag and drop from listbox to a textbox in WPF?

我是WPF和C#的新手。 我有将字符串从列表框拖放到文本框的代码,但是,我希望该拖放覆盖/替换当前文本框中的文本。 现在,将文本插入放置鼠标所在位置的文本框字符串中。 到目前为止,这里是我拥有的WPF和事件处理程序。 提前致谢。

<ListBox  Name="listbox1" HorizontalAlignment="Left" Height="115" Margin="100,75,0,0" 
                  VerticalAlignment="Top" Width="150" PreviewMouseDown="listbox1_MouseDown">
            <ListBoxItem Content="Coffie"></ListBoxItem>
            <ListBoxItem Content="Tea"></ListBoxItem>
            <ListBoxItem Content="Orange Juice"></ListBoxItem>
            <ListBoxItem Content="Milk"></ListBoxItem>
            <ListBoxItem Content="Iced Tea"></ListBoxItem>
            <ListBoxItem Content="Mango Shake"></ListBoxItem>
        </ListBox>
        <TextBox Name="textbox1" HorizontalAlignment="Left" Height="23" Margin="351,75,0,0" TextWrapping="Wrap"Text="" VerticalAlignment="Top" Width="120" SpellCheck.IsEnabled="True" Cursor="IBeam"
                 AcceptsReturn="True" AllowDrop="True" PreviewDragOver="textbox1_PreviewDragOver"
                 DragEnter="textbox1_DragEnter" Drop="textbox1_Drop"/>



private void listbox1_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (listbox1.SelectedItems.Count > 0)
            {
                ListBoxItem mySelectedItem = listbox1.SelectedItem as ListBoxItem;
                if (mySelectedItem != null)
                {
                    DragDrop.DoDragDrop(listbox1, mySelectedItem.Content.ToString(), DragDropEffects.Copy);
                }
            }
        }
        private void textbox1_PreviewDragOver(object sender, DragEventArgs e)
        {
            e.Handled = true;
        }

        private void textbox1_DragEnter(object sender, DragEventArgs e)
        {
            textbox1.Clear();
            e.Effects = DragDropEffects.Copy;
        }
        private void textbox1_Drop(object sender, DragEventArgs e)
        {
            string tstring;
            tstring = e.Data.GetData(DataFormats.StringFormat).ToString();
            textbox1.Text= tstring;
        }

尝试处理Preview Drop事件而不是Drop

private void textbox1_PreviewDrop(object sender, DragEventArgs e)
{
    e.Handled = true;
    string tstring;
    tstring = e.Data.GetData(DataFormats.StringFormat).ToString();
    textbox1.Text = tstring;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM