zoukankan      html  css  js  c++  java
  • Silverlight实用窍门系列:42.读取拖动到控件上的外部txt和jpg文件,多外部文件的拖动【附带实例源码】

            本实例将读取拖动到Silverlight的ListBox控件中的txt文件或者Jpg文件。在本实例中将讲如果通过UIelementA.Drop事件获取到拖动到UIelementA上的文件的相关名称以及路径等信息,以处理多个外部文件拖动到Silverlight中的相关一些小技巧的应用和操作。

            在本例中我们设置外部文件拖动到ListBox中去,首先我们要设置ListBox的AllowDrop="True",再添加一个Drop事件Drop="listBox1_Drop",这样在外部文件拖动到ListBox中的时候可以触发Drop事件。

            首先我们来看MainPage.xaml代码如下所示:

        <Grid x:Name="LayoutRoot" Background="White" Width="600">
            <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Width="600" 
                        Orientation="Horizontal">
                <ListBox Name="listBox1" Background="AliceBlue" Width="240"
                         HorizontalAlignment="Left" VerticalAlignment="Top" 
                         AllowDrop="True" Height="400" Drop="listBox1_Drop">
                </ListBox>
                <TextBlock Height="149" HorizontalAlignment="Left" 
                           Name="textBlock1" VerticalAlignment="Top" 
                           Width="323" TextWrapping="Wrap" />
            </StackPanel>
                <Image Height="238" Name="image1" HorizontalAlignment="Left"
                       VerticalAlignment="Top" Margin="240 160 0 0" Stretch="Fill"
             Width="320" Source="/SLDragFile;component/Images/1_24573_f93ae69954e2e1d.jpg" />
        </Grid>
    

           在上面有一个TextBlock显示读取到的Txt文件内容,还有一个Image控件显示读取到的图片内容。下面我们看MainPage.xaml.cs文件代码如下:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Net;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    using System.Windows.Navigation;
    using System.IO;
    using System.Windows.Markup;
    using System.Windows.Media.Imaging;

    namespace SLDragFile
    {
    public partial class MainPage : UserControl
    {
    public MainPage()
    {
    InitializeComponent();
    }
    private void listBox1_Drop(object sender, DragEventArgs e)
    {
    //获取与拖放事件相关联的元素
    IDataObject dataObject = e.Data as IDataObject;
    //返回被拖放的外部文件的 FileInfo 数组
    FileInfo[] files = dataObject.GetData(DataFormats.FileDrop) as FileInfo[];

    foreach (FileInfo file in files)
    {
    //如果存在文件
    if (file.Exists)
    {
    listBox1.Items.Add(
    "文件名: " + file.Name);
    //如果是txt文件,读取txt文件并且显示出来
    if (file.Extension.ToLower() == ".txt")
    {
    StreamReader sreader
    = file.OpenText();
    string txtstr = "";
    string ReadStr = string.Empty;
    while ((txtstr = sreader.ReadLine()) != null)
    {
    ReadStr
    += txtstr;
    }
    this.textBlock1.Text = ReadStr;
    }
    //如果是Jpg图片,读取图片并且显示出来
    if (file.Extension.ToLower() == ".jpg")
    {
    FileStream fs
    = file.OpenRead();
    BitmapImage image
    = new BitmapImage();
    image.SetSource(fs);
    image1.Source
    = image;

    }
    }
    else
    {
    listBox1.Items.Add(
    "文件添加失败!");
    }
    }
    }
    }
    }

            下面我们来看看拖动一张jpg图片文件的效果如下:

            拖动一个UTF-8格式的txt文件的效果如下:

            拖动多个文件到ListBox所出现的情况如下面三张图片所示:

            本文采用VS2010+Silverlight 4.0编写,如需源码请点击 SLDragFile.zip 下载

  • 相关阅读:
    根据excel表格中的某一列内容,使用python将其拆分成多个excel表格
    Python操作excel
    opensips(三):load_balancer与NAT
    opensips(二):NAT官方脚本
    sip头域
    OPensips(一):NAT例子
    四、word2vec + siameseLSTM改进(1)
    三、word2vec + siameseLSTM
    二、LSTM处理不定长句子
    一、word2vec的使用
  • 原文地址:https://www.cnblogs.com/chengxingliang/p/2053684.html
Copyright © 2011-2022 走看看