将QueryString ID从aspx页面传递到winform文本框

时间:2014-01-30 15:06:55

标签: c# asp.net winforms parameters

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

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();

2 个答案:

答案 0 :(得分: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位置对你有用。

答案 1 :(得分:0)

您是否尝试过使用ClickOnce?我认为可能很有趣,如果您的客户端没有安装该应用程序,clickOnce将在启动应用程序之前进行安装。

你也可以通过args。

http://msdn.microsoft.com/en-us/library/ms172242(v=vs.110).aspx