アプリケーションを介して Web サイトと対話するプロジェクトがあります。
アイデアは、特定の Web 要素をクリックすると、2 番目のフォームが表示されるというものです。2 つのテキスト ボックスがあり、値を入力して Enter キーを押すと、パレット値が Web ページのパレット ID に貼り付けられ、[+] ボタンを押して Web ページが送信されます。初めて機能しました。ただし、Web ページが送信された後。2 番目のフォームを閉じて、その Web 要素をクリックして再度開きますが、同じことをもう一度行うことはできません。
デバッグ時に、システムは Enter キーを押したことを認識し、値をパレット ID に貼り付けて「+」ボタンをクリックするなど、すべてのコードを実行しました。ただし、初めて機能するだけで、Web が送信された後は機能しなくなります
どうしてか分かりません?私は C# プログラミングの経験があまりないので、どこかで間違っていたのかもしれません。
これがその画像です
http://i182.photobucket.com/albums/x38/DNK90/app_zpsd55a4065.jpg
Web ページが送信された後、2 番目のフォームはまだそこにあるので、問題が発生する可能性があると思います。
ここに私のコードがあります:
フォーム 1: フォーム 2 を表示し、Web から要素を取得する部分を投稿するだけです
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
pallet_element = webBrowser1.Document.GetElementById("pallet_id");
weighing_element = webBrowser1.Document.GetElementById("weighing_auto");
add_new_element = webBrowser1.Document.GetElementById("btnNewWNR");
no_Of_WNR = webBrowser1.Document.GetElementById("noOfWNR");
if (no_Of_WNR != null)
{
// number of row
int no = Convert.ToInt32(no_Of_WNR.GetAttribute("value"));
// button that saves a row
//save_element = webBrowser1.Document.GetElementById("btnSaveWNR" + no);
// gross weight of a row
gross_element = webBrowser1.Document.GetElementById("wnr_gross_weight_" + no);
}
if (pallet_element != null && weighing_element != null && add_new_element != null && gross_element != null)
{
frm2 = new Form2(pallet_element, weighing_element, add_new_element, gross_element);
pallet_element.Click += new HtmlElementEventHandler(OpenWeigh);
}
}
public void OpenWeigh(object sender, HtmlElementEventArgs e)
{
// setting the COM port connection
frm2.SettingRS232(count);
count++;
frm2.ShowDialog();
}
フォーム 2:
private void txtPallet_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r')
{
if (this.pallet_element != null && this.weighing_element != null && add_new_element != null)
{
// althought the flow comming and get through of below rows
// but nothing happened on the web after the first time run successfully
// set value in the txtPallet into pallet_id
this.pallet_element.InnerText = txtPallet.Text;
this.weighing_element.InnerText = txtWeight.Text;
add_new_element.InvokeMember("click");
this.gross_element.InnerText = txtWeight.Text;
}
}
}