using System.Web; using Yw; namespace PBS.Desktop { public partial class WechatLoginCtrl : DevExpress.XtraEditors.XtraUserControl, ILogin { public WechatLoginCtrl() { InitializeComponent(); } /// /// 登录开始事件 /// public event Action LoginStartEvent; /// /// 登录取消事件 /// public event Action LoginCancelEvent; /// /// 登录完成事件 /// public event Action LoginEndEvet; private bool _isInitialized = false;//初始化 private const string _template = "hzkw_wx_template";//微信登录模板 private const string _software = "HStation_XHS_DESKTOP";//软件编码 /// /// 初始化 /// public async void Initial() { if (_isInitialized) { return; } _isInitialized = true; var loginUrl = await BLLFactory.Instance.GetLoginUrl(_template); await this.webView21.EnsureCoreWebView2Async(); this.webView21.Source = new Uri(loginUrl); this.webView21.CoreWebView2.SourceChanged += CoreWebView2_SourceChanged; } //源改变 private async void CoreWebView2_SourceChanged(object? sender, Microsoft.Web.WebView2.Core.CoreWebView2SourceChangedEventArgs e) { var collection = HttpUtility.ParseQueryString(this.webView21.Source.Query); var code = collection["code"]; var state = collection["state"]; if (!string.IsNullOrEmpty(code)) { LoginStartEvent?.Invoke(); var result = await BLLFactory.Instance.LoginSoftwareStandardByWechatAccount(_template, _software, code, null); LoginEndEvet?.Invoke(result); } } } }