2014-01-30 38 views
2

我目前正在开发一个调用winform的aspx页面。当前的问题是将网页中的文本框变量通过ProcessStartInfo事​​件传递给winform文本框以检索图像。查看器来自供应商,但仅适用于winform环境,但其他信息来自CF页面,href和非功能性Web图像查看器。我在做什么?将aspx页面的QueryString ID传递给winform文本框

ASPX页面代码:

namespace ImageView 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     protected void page Load(object sender, EventArgs e) 
     { 
      TextBox1.Text = Request.QueryString["DKT_ID"].ToString(); 
      //TextBox2.Text = Request.QueryString["Name"].ToString(); 
      //TextBox3.Text = Request.QueryString["Age"].ToString(); 

ProcessStartInfo psi = new ProcessStartInfo(@"C:\ImageViewer\ImageView.exe"); 
      psi.WindowStyle = ProcessWindowStyle.Normal; 

      Process p = new Process(); 
      p.EnableRaisingEvents = true; 
      p.Exited += new EventHandler(MyExited); 
      p.StartInfo = psi; 
      p.Start(); 
     } 

Winform的代码:

 //SQL section for returning images 
     #region "Images Query" 

     ImageQuery = "SELECT isn AS isn "; 
     ImageQuery += "FROM bc_bcc_document (NOLOCK) "; 
     ImageQuery += "WHERE barcode_id = ? "; 

     DataTable Imagetable = new DataTable(); 
     Imagetable.Columns.Add("ISN", typeof(Int32)); 
     DataRow Imagerows; 

     //fills table with Images information 
     OdbcCommand comd = new OdbcCommand(ImageQuery); 

     string conne = "Dsn=XXXX; uid=XXXXX; pwd=XXXXXX"; 

     using (OdbcConnection connected = new OdbcConnection(conne)) 
     { 
      comd.Connection = connected; 
      connected.Open(); 

      comd.Parameters.AddWithValue("barcode_id", txtBarcode.Text); 

      OdbcDataReader readar = comd.ExecuteReader(); 

      while (readar.Read()) 
      { 
       isn = Convert.ToInt32(readar["isn"].ToString().TrimEnd()); 
       Imagerows = Imagetable.NewRow(); 
       Imagerows["ISN"] = isn; 
      } 
      readar.Close(); 
+0

有趣的问题,你不能把它作为参数传递吗? – JonE

+0

@ Glitch100因此是我询问的原因。我从来没有这样做过,所以我有点失落,因为它是完成这项工作所需的最后部分。你能解释还是展示一个例子? – clerktech

回答

5

单从网页传递参数这样

var proc = new Process 
{ 
    EnableRaisingEvents = false, 
    StartInfo = new ProcessStartInfo() 
     { 
      UseShellExecute = false, 
      FileName = path, 
      Arguments = Request.QueryString["DKT_ID"].ToString() 
     } 
    }; 
    proc.Start(); 

,并在读取命令行参数的像这样的WinForms应用程序 -

string singleArgument = Environment.GetCommandLineArgs()[1]; 

P.S - 假设你是传递一个参数,这就是为什么Environment.GetCommandLineArgs()[1]用于 因为[0]个位置,你会得到数组中的路径和[1] ST位置将是对你有用。

+0

你有'@argument',那是关于文本框的值还是来自URL的查询字符串?就像我之前说过的,我从来没有做过这样的事情,所以有点混乱。感谢您的协助。 – clerktech

+0

@argument只不过是一个字符串,你可以从你的网页传递。所以,从winforms应用程序,只需从任何形式调用Environment.GetCommandLineArgs()来获取传递的参数。我也修改了我的答案。请检查以供参考。在winform中的 –

+0

,我在查询中调用一个文本框来检索图像。我用'txtBarcode.Text = singleArgument'但没有结果。这就是为什么我需要从URL中获取DKT_ID并传递给winform。 – clerktech

相关问题