PDA

View Full Version : سوال: مدیریت Popup و new window در WebBrowser



pesare
چهارشنبه 07 مرداد 1394, 09:00 صبح
سلام دوستان

چطوری میتونم popup یا صفجه هایی که بصورت Open Link in new window باز میشن رو تو برنامم مدیریت کنم که اونها رو هم توی فرم برنامه خودم باز کنه؟

zayens
چهارشنبه 07 مرداد 1394, 09:25 صبح
یه فرم بساز خب!
پروپرتی FormBorderStyle را هم None بزار
بعدا میتونی نوع باز شدنش را با انیمشین کنترل کنی

pesare
چهارشنبه 07 مرداد 1394, 09:28 صبح
میشه بیشتر توضیح بدید

zayens
چهارشنبه 07 مرداد 1394, 09:31 صبح
کجاشو مشکل داری؟
چجور پاپآپ میخوای برای چکاری؟
برای notification یا لینک یا....؟

zayens
چهارشنبه 07 مرداد 1394, 09:46 صبح
AHA


using System.Diagnostics;
ProcessStartInfo sInfo = new ProcessStartInfo("http://mysite.com/");
Process.Start(sInfo);
//یا
Process.Start("http://www.google.com/");

pesare
چهارشنبه 07 مرداد 1394, 09:50 صبح
حالا اگر من ندونم کی قراره این حالت پیش بیاد چی؟
مثلا 100 لینک هست که نمیدونم کدومش به صورت open in new window باز شدند.

zayens
چهارشنبه 07 مرداد 1394, 09:57 صبح
خب
ازین استفاده کن:

public void gotoSite(string url){
System.Diagnostics.Process.Start(url);
}

zayens
چهارشنبه 07 مرداد 1394, 10:02 صبح
popup را میخوای غیر فعال کنی یا میخوای فقط توی web Browser باز شه؟

zayens
چهارشنبه 07 مرداد 1394, 10:16 صبح
اوکی

باید دو تا فرم بسازی
توی فرم اولت که web browser گذاشتی. این هیچ
حالا هنگام کلیک روی popUp ها باید جوری مدیریت کنی که فرم بعدی باز شه
چجوری؟

1- اول این رو به رفرنست Add کن: shdocvw.dll
(روی رفرنس راست کلیک کن و Add رو بزن و Browse را بزن و برو مسیر زیر
c:\windows\system32 و shdocvw.dll را به رفرنسهای پروژه اضافه کن)

2- یه فرم بساز (این برای پاپ آپه) و از toolBox یه web Browser روش بنداز
این کدها رو هم در نظر بگیر :
public partial class Form2 : Form { public Form2() {
InitializeComponent();
}
public WebBrowser Browser {
get { return webBrowser1; }
}

}

3- حالا توی همون فرم اولت که اونجا هم web browser باید باشه کدهای پایین رو که برات گذاشتم بزار
public partial class Form1 : Form { public Form1() {
InitializeComponent();
webBrowser1.Url = new Uri("http://google.com");
}
SHDocVw.WebBrowser nativeBrowser;
protected override void OnLoad(EventArgs e) {
base.OnLoad(e);
nativeBrowser = (SHDocVw.WebBrowser)webBrowser1.ActiveXInstance;
nativeBrowser.NewWindow2 += nativeBrowser_NewWindow2;
}
protected override void OnFormClosing(FormClosingEventArgs e) {
nativeBrowser.NewWindow2 -= nativeBrowser_NewWindow2;
base.OnFormClosing(e);
}


void nativeBrowser_NewWindow2(ref object ppDisp, ref bool Cancel) {
var popup = new Form2();
popup.Show(this);
ppDisp = popup.Browser.ActiveXInstance;
}

}

همین!




با این روش توی فرم اولت با web Browser میشه کار کرد و اگر کاربر popup رو کلیک کنه بجای IE فرم دومت باز میشه