0

Windows フォーム テキスト ボックス コントロールから HTML テキスト ボックスにデータを送信しようとしていますが、

シナリオ: C# の私の Windows フォームには、さまざまな TextBox コントロールと 1 つの送信ボタンがあり、ボタンをクリックすると、テキスト ボックスのデータが HTML Tetxtbox に転送されます。(クエリ文字列などは使いたくない)

私のHTMLコード

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test Application</title>
    <script type="text/javascript" language="javascript">
        window.onload = body_Onload;
        function body_Onload() {
            document.getElementById("txtFirstName").focus();
        }
    </script>
</head>
<body>
    First Name:
    <input type="text" id="txtFirstName" /><br />
    Last Name:
    <input type="text" id="txtLastName" /><br />
    Address:
    <input type="text" id="txtAddress" /><br />
    Mobile:
    <input type="text" id="txtMobile" /><br />
</body>
</html>

C# Winform コード

public partial class Form1 : Form
    {
        private SHDocVw.InternetExplorer TargetIE = null;
        string url;
        public Form1()
        {
        this.button1 = new System.Windows.Forms.Button();
        this.textBox1 = new System.Windows.Forms.TextBox();
        this.textBox2 = new System.Windows.Forms.TextBox();
        this.textBox3 = new System.Windows.Forms.TextBox();
        this.textBox4 = new System.Windows.Forms.TextBox();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            GetTheIEObjectFromSystem("Q_26773800");
            SendTextToActiveElementWithSubmitOptionSet(false);
        }
        private void GetTheIEObjectFromSystem(string inurl = ".")
        {
            SHDocVw.ShellWindows SWs = new SHDocVw.ShellWindows();
            foreach (SHDocVw.InternetExplorer internetExplorer in SWs)
            {
                url = internetExplorer.LocationURL;
                TargetIE = internetExplorer;
                return;
            }

        }
        private void SendTextToActiveElementWithSubmitOptionSet(bool btnSubmit)
        {
            mshtml.IHTMLDocument2 document = null;
            document = TargetIE.Document as mshtml.IHTMLDocument2;
            if (!document.activeElement.isTextEdit)
            {
                MessageBox.Show("Active element is not a text-input system");
            }
            else
            {
                HTMLInputElement HTMLI;
                //HTMLI = document.activeElement as HTMLInputElement;

                 HTMLI = document.activeElement as HTMLInputElement;
                 var tag = HTMLI.document as mshtml.HTMLDocumentClass;
                 mshtml.IHTMLElementCollection a = tag.getElementsByTagName("input");
                 for (int i = 0; i< a.length; i++) // a.length = 4
                 {

                 }
                HTMLI.value = textBox1.Text;

            }
        }
    }
}

このコードを使用すると、最初の winform textbox 値のみが HTML Textbox に渡されますが、他の textxbox の値を winform textbox から html textbox に転送したいと考えています。

for ループを使用して長さ = 4 を取得しますが、このループを使用してデータを winform から html に転送する方法がわかりませんか?

4

1 に答える 1

0

関数を追加したばかりのすべてのコードを貼り付けるだけです

SendTextToActiveElementWithSubmitOptionSet(bool btnSubmit) 

コードの下で問題を解決します

 private void SendTextToActiveElementWithSubmitOptionSet(bool btnSubmit)
        {
            mshtml.IHTMLDocument2 document = null;
            document = TargetIE.Document as mshtml.IHTMLDocument2;
            if (!document.activeElement.isTextEdit)
            {
                MessageBox.Show("Active element is not a text-input system");
            }
            else
            {
                HTMLInputElement HTMLI;
                HTMLI = document.activeElement as HTMLInputElement;
                var tag = HTMLI.document as mshtml.HTMLDocumentClass;
                mshtml.IHTMLElementCollection hTMLElementCollection = tag.getElementsByTagName("input");
                    foreach (mshtml.HTMLInputElement el in hTMLElementCollection)
                    {
                        switch (el.id)
                        {
                            case "txtFirstName":
                                el.value = textBox1.Text;
                                break;
                            case "txtLastName":
                                el.value = textBox2.Text;
                                break;
                            case "txtAddress":
                                el.value = textBox3.Text;
                                break;
                            case "txtMobile":
                                el.value = textBox4.Text;
                                break;
                        }                        
                    }
            }
        }
于 2013-09-03T15:57:33.750 に答える