把网页上的数据显示在windowsForm的textbox里

来源:互联网 发布:路由器哪个牌子好 知乎 编辑:程序博客网 时间:2024/05/18 00:55

问题定义:

        用户在工作中需要把datagrid里的电话号码列其中的一个电话号码复制到windowsForm里的textbox里,然后在winForm里进行操作。由于粗心的用户经常复制错误,所以winForm程序的处理也是错误的。

功能需求:

        为了避免用户复制错误导致程序出错(输入的是垃圾,输出的也是垃圾)。现在决定做一个程序替用户复制。

设计方案:

        在datagrid里加一个模版列,用到html的文本控件,在javascript里引进fso对象,写文本文件。因在B/S系统上采用了Javascript写客户机本地文件的技术,所以需要在客户上设定IE的安全级别内的设置才能顺利在本地硬盘写入临时文件具体设置如下:

    打开IE程序,点菜单工具à选项,打开选项窗口,并点到安全页面。

          点“自定义级别”按钮,打开如下窗口,在“ActiveX控件和插件”列中将“对没有标记为安全的ActiveX控件进行初始化和脚本运行”设为“启用”。

   点击“确定”回到IE窗口即可。

最后,在winForm程序里创建线程读取文件,如果文件不存在,线程终止。

代码编写:

winform里的代码

private void mystart()
  {  
   if(File.Exists("d://phone.txt"))           //文件存不存在??
   {
    if(this.textBox1.Text.Length<11)
    {
     this.read_file();                         //读取文件
     System.Threading.Thread.Sleep(2000);
    }
   }
   else
   {
    System.Threading.Thread.Sleep(1000);//文件不存在,关闭线程
   }
  }
  private void read_file()
  {
   //读取文本文件.
   try
   {
    // StreamReader to read from a file.
    // The using statement also closes the StreamReader.
    using(StreamReader sr=new StreamReader("d://phone.txt"))
    {
     String line;
     while((line=sr.ReadLine())!=null)
     {
      textBox1.Text=textBox1.Text+line;
     }
    }
   }
   catch(Exception ee)
   {
    textBox1.Text=ee.Message.ToString();
   }
  }

private void timer2_Tick(object sender, System.EventArgs e)
  {
   System.Threading.Thread myThread;
   myThread=new System.Threading.Thread(new System.Threading.ThreadStart(mystart));
   myThread.Start();
   //在timer控件里,不停的启动线程。
  }

javascript代码:

<script type="text/javascript">
     function addr(obj)
     {
       var aa=obj;
       var fso,fj;
       fs=new ActiveXObject("Scripting.FileSystemObject");
       fj=fs.CreateTextFile("d://phone.txt",true);
       fj.WriteLine(aa);//写文件。
     } 
</script>

datagrid里的模版列代码。

<asp:TemplateField>
                    <ItemTemplate>
                        <button id="phone" value='<%# DataBinder.Eval(Container.DataItem,"FromTeleNumber") %>' onclick="addr(<%# DataBinder.Eval(Container.DataItem,"FromTeleNumber")%>)">
                        <%# DataBinder.Eval(Container.DataItem, "FromTeleNumber")%>
                        </button>
                    </ItemTemplate>
</asp:TemplateField>
 

这样在datagrid里点击电话号码就可以在winform里的textbox里看到它的值了。

 

原创粉丝点击