开发环境:C# 2008 WinForm
情况说明:
   在窗体上有一个textBox控件:textBox1
要实现的目标:
   从IE或其他浏览器拖动一个连接过来后获取这个连接地址。
代码如下: private void textBox1_DragEnter(object sender, DragEventArgs e)
        {          
            if ((e.Data.GetDataPresent(DataFormats.Html, false)) || (e.Data.GetDataPresent(DataFormats.Rtf, false)) || (e.Data.GetDataPresent(DataFormats.Text, false)))
            {
                CanDrog = true;
                e.Effect = DragDropEffects.Copy;
            }
            else
                e.Effect = DragDropEffects.None;
        }  private void textBox1_DragDrop(object sender, DragEventArgs e)
        {
            e.Effect = DragDropEffects.None;
            string strTitle = "";
            string strUrl = "";
            string strCont = "";
            if (CanDrog)
            {
                if ((e.Data.GetDataPresent(DataFormats.Html, false)) || (e.Data.GetDataPresent(DataFormats.Rtf, false)))
                {
                    Clipboard.SetDataObject(e.Data);                    string strMFP = e.Data.GetData(DataFormats.Html, true).ToString();                    System.Text.Encoding.Default.GetBytes(strMFP);                    System.Text.Encoding gb2312 = System.Text.Encoding.GetEncoding("GB2312");                    //byte[] encodedBytes = gb2312.GetBytes(strMFP);                    byte[] encodedBytes = System.Text.Encoding.Default.GetBytes(strMFP);                    strMFP = System.Text.Encoding.UTF8.GetString(encodedBytes);                    Regex regx1 = new Regex(@"<TITLE.*>.*TITLE>", RegexOptions.IgnoreCase);                    Match m = regx1.Match(strMFP);                    if (m.Success)
                    {                        strTitle = Regex.Replace(m.Value, "<[^>]*>", "").Replace("TITLE>", "");
                    }                    regx1 = new Regex(@"SourceURL:.*", RegexOptions.IgnoreCase);
                    m = regx1.Match(strMFP);                    if (m.Success)
                        strUrl = m.Value.Substring(10);                }
                strCont = e.Data.GetData(DataFormats.Text, true).ToString();              
            }        }
遇到的问题:
以网站http://www.gz2010.cn/special/0078000L/newscenter.html为例,当我拖动下面这条新闻的时候:
借网络媒体加强亚运宣传 记者赞场馆赛后利用
我跟踪到的结果:
借网络媒体加强亚运宣�?记者赞场馆赛后利用
这里面出现了乱码  �?
请问如何处理?谢谢!

解决方案 »

  1.   

    System.Text.Encoding 换个类型试试。
      

  2.   

    搞定了,下面这样就可以了:MemoryStream vMemoryStream =
                           e.Data.GetData("Html Format") as MemoryStream;
                    vMemoryStream.Position = 0;
                    byte[] vBytes = new byte[vMemoryStream.Length];
                    vMemoryStream.Read(vBytes, 0, (int)vMemoryStream.Length);
                    textBox1.Text = Encoding.UTF8.GetString(vBytes);