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

本文介绍了一个解决方案,旨在避免用户在从datagrid复制电话号码到WinForm的textbox时出错。通过在datagrid中添加模板列并利用JavaScript写入本地文件,再由WinForm程序读取该文件,确保正确复制数据。详细介绍了设置IE安全级别以启用ActiveX控件,以及WinForm和JavaScript的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题定义:

        用户在工作中需要把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") %>' οnclick="addr(<%# DataBinder.Eval(Container.DataItem,"FromTeleNumber")%>)">
                        <%# DataBinder.Eval(Container.DataItem, "FromTeleNumber")%>
                        </button>
                    </ItemTemplate>
</asp:TemplateField>
 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值