好的,這個會很有趣。我在我的應用程序中構建一個身份驗證流程。我的應用程序將打開一個帶有webbrowser元素的模式窗口並瀏覽到auth URL。然後它將監視webbrowser元素對特定字符串的URL更改。當它找到字符串時,它會檢索訪問代碼,關閉窗口並將代碼返回給父代。我的代碼如下:模態窗口中的DialogResult錯誤
模態窗口:
string url = ...
Browser browser = new Browser(new Uri(url));
browser.Owner = parent;
if (browser.ShowDialog() == true)
{
password.Password = browser.result;
...
}
和當然,錯誤,我得到:
的DialogResult
public partial class Browser : Window { private string code = ""; private Uri navi; public TwitchBrowser(Uri url) { InitializeComponent(); this.navi = url; } private void Window_Loaded(object sender, RoutedEventArgs e) { webBrowser.Navigate(this.navi); webBrowser.Navigating += webBrowser_Navigating; } void webBrowser_Navigating(object sender, NavigatingCancelEventArgs e) { if (e.Uri.ToString().Contains("?code=")) { this.code = e.Uri.ToString().Split('?')[1].Split('&')[0].Replace("code=", ""); this.DialogResult = true; } } public string result { get { return code; } } }
從父調用只有在創建窗口並顯示爲對話框後才能設置。
有趣的是,該應用程序工作!它獲取代碼並將其存儲在密碼字段中,正如它應該的那樣。那麼錯誤的重點是什麼?我的意思是,我知道我可以用Try-Catch壓制它;但我擔心它是一個更大問題的根源。
謝謝!這工作。 – 2014-10-04 12:28:09
其實,不行,它不起作用。仍然收到錯誤。 – 2014-10-04 12:33:04
我已經更新了OP中的代碼來表示我當前的代碼。 – 2014-10-04 12:38:44