TranslateBrowser(WebTranslate.TranslateBase trans) { InitializeComponent(); this.Shown += new EventHandler(TranslateBrowser_Shown); this.FormClosed += new FormClosedEventHandler(TranslateBrowser_FormClosed); this.webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted); this.webBrowser.Navigating += new WebBrowserNavigatingEventHandler(webBrowser_Navigating); this.translate(trans); }
static public TranslateBrowser Create(WebTranslate.TranslateBase trans, System.Windows.Forms.IWin32Window parent) { if (instance != null) { instance.translate(trans); return(instance); } TranslateBrowser browser = new TranslateBrowser(trans); //browser.Show( parent ); browser.Show(); // 親よりも後ろに配置できる return(browser); }
static void trans_AsyncDone(WebTranslate.TranslateBase trans) { // 通信完了までにウインドウがとじられていると、存在しない場所にアクセスしてエラーを起こす。 // 何か手立てが欲しいが disposeかclose時にチェックして動いていたら、中断させるしかないか? // いやこの関数はstaticであるべきか、これは単一インスタンス化した場合に可能であるがdisposeでinstance=null?再利用? // 複数同時に来たらどうするか…critical section? // 別スレッドからのあくせすなのでやはりCSか if (instance == null) { return; } lock (instance.sync) { switch (trans.Result) { case WebTranslate.TranslateBase.ConnectionResult.FailureTimeOut: instance.webBrowser.DocumentText = "タイムアウトしました"; break; case WebTranslate.TranslateBase.ConnectionResult.FailureResponce: instance.webBrowser.DocumentText = "通信に失敗しました"; break; case WebTranslate.TranslateBase.ConnectionResult.FailureUnknown: instance.webBrowser.DocumentText = "不明なエラーが発生しました"; break; case WebTranslate.TranslateBase.ConnectionResult.Success: //instance.webBrowser.Url = new System.Uri( trans.URL ); instance.webBrowser.DocumentText = trans.OutputText; break; default: break; } } //instance.Activate(); //Console.WriteLine( "done!" ); }
void translate(WebTranslate.TranslateBase trans) { trans.AsyncDone += new WebTranslate.TranslateBase.CallbackFunc(trans_AsyncDone); trans.GetResponseASync(); }