2016-11-24 10 views
0

これまでより多くのアプリケーションでこれを動作させることができましたが、壊したものがありました。何らかの理由で「電子メール」フィールドがクリックされていますが、最初のフォームからのデータがフィールドに入力されていません。何かが入力される前にフィールドにデータを入力しようとしているのですか?前のフォームからログインボタンをクリックした後のページにログインすることができWebBrowserControlを使用してWebページにログインしますが、ログインフォームは別です

をForm1(ログインフォーム):。

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication4 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     public string username; 
     public string password; 
     public bool isLoggedIn = false; 

     public void btnLogin_Click(object sender, EventArgs e) 
     { 
      Form2 formBrowser = new Form2(); 
      username = textBox1.Text; 
      password = textBox2.Text; 
      formBrowser.Show(); 
      isLoggedIn = true; 
     } 


    } 
} 

のForm2(メインwebbro wserフォーム):あなたがForm1の新しいインスタンスを作成し、Form1.isLoggedInの値にアクセスすると、あなたのデフォルト値を与える場合、インスタンスメンバーは、デフォルト値としてfalseで初期化

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace WindowsFormsApplication4 
{ 
    public partial class Form2 : Form 
    { 
     public Form2() 
     { 
      InitializeComponent(); 
     } 
     bool is_sec_page = false; 
     void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
     { 
      Form1 form1 = new Form1(); 
      if (!is_sec_page && form1.isLoggedIn == true) 
      { 
       Form1 formLogin = new Form1(); 
       HtmlElement ele = webBrowser1.Document.GetElementById("email"); 
       ele.InnerText = formLogin.username; 
      } 
      is_sec_page = true; 
     } 
    } 
} 

答えて

0

isLoggedInので。ここでできることは、変数を静的にしてからインスタンスを使わずにアクセスできることです。

のでForm1isLoggedInの宣言は次のようになります。

public static bool isLoggedIn = false; 

そして、あなたは他の変数の場合と同様に、このForm1.isLoggedInようForm2からそれらにアクセスすることができます。

public static string username; 
public static string password; 
public static bool isLoggedIn = false; 

そして_DocumentCompletedは次のようになります::宣言セッションは次のようになることを意味し、どの

void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    if (!is_sec_page && Form1.isLoggedIn) 
    {   
     HtmlElement ele = webBrowser1.Document.GetElementById("email"); 
     if(ele != null)    
      ele.InnerText = Form1.username; 
    } 
    is_sec_page = true; 
} 
+0

ありがとうございました、読むためのコードを簡単にないこと(私はそれらのダミーの一部を実現しています間違い、私は一種の大きなアプリケーションとしてかなり素早くまとめました)。ただし、Form1に入力されたものはまだ入力していません。フィールドは、idによって見つかったかのようにクリックされます(キャレットが点滅しています)が、空白のままです。 – user3341951

+0

ブレークポイントを置き、 'Form1.username'の値をチェックし、' ele'がnullでないことを確認してください –

関連する問題