我遇到了一個我無法解決的問題,我試圖將一個表單this的實體傳遞給一個類,
我的代碼:
namespace newapplication
{
public partial class FormBrowser : Form
{
public ChromiumWebBrowser browser。
private ChromeDriver _driver;
private readonly FormMain _formMain;
public static ClassProject _project;
public static string _mode;
private readonly string[] _sites;
private static int counter = 0。
private static int sitesCount =0;
public bool useSelenium = false;
public bool useDebugJS = false;
public FormBrowser(string[] sites, string mode, FormMain formMain, ClassProject project)
{
InitializeComponent()。
InitializeBrowser(sites, project);
_formMain = formMain;
_mode = mode;
_sites = sites;
_project = 專案。
}
private FormBrowser _formBrowser;
public class MyCustomMenuHandler : IContextMenuHandler
{
public void OnBeforeContextMenu( IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model)。
{
///使用模型的Clear方法洗掉任何存在的選項。
model.Clear()。
if (model.Count > 0)
{
model.AddSeparator()。
}
model.AddItem((CefMenuCommand)26508, "復制文本...")。
model.AddItem((CefMenuCommand)26509, "Paste text ...") 。
model.AddSeparator()。
model.AddItem((CefMenuCommand)26501, "Open chrome devtools ...") 。
model.AddItem((CefMenuCommand)26502, "Open email verifier ...") 。
model.AddSeparator()。
model.AddItem((CefMenuCommand)26503, "復制當前URL ...");
model.AddSeparator()。
model.AddItem((CefMenuCommand)26504, "保存選擇的文本到[REG]標志...");
model.AddItem((CefMenuCommand)26505, "Save selected text to [LAP] flags ..."/span>)。
model.AddItem((CefMenuCommand)26506, "Save selected text to email link flags ..."/span>)。
model.AddItem((CefMenuCommand)26507, "Save selected text to email link ignore flags ...") 。
}
public bool OnContextMenuCommand( IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, CefMenuCommand commandId, CefEventFlags eventFlags)。
{
if (commandId ==(CefMenuCommand)26501)
{
browser.GetHost().ShowDevTools()。
return true。
}
if (commandId == (CefMenuCommand)26502)
{
FormEmailsActivation fea = new FormEmailsActivation(_formBrowser);
fea.Show();
return true;
}
if (commandId == (CefMenuCommand)26503)
{
if (_mode == "MODE_LAP"/span>)
{
UpdatePostedLink(_project, _formBrowser)。
}
else
我試圖通過當前表單的一個實體:
private FormBrowser _formBrowser;
對這個類:
public class MyCustomMenuHandler : IContextMenuHandler : IContextMenuHandler
我想我可以做到:
public class MyCustomMenuHandler : IContextMenuHandler(_formBrowser)
但這只是顯示了很多我甚至無法列出的錯誤(這只是一個嘗試性的東西)
我完全陷入了困境。
我完全不知道如何讓表單實體通過,以便它的值不會是空的。
答案可能就在我眼前,如果有任何關于這個問題的提示,我將非常感激。
uj5u.com熱心網友回復:
你的 "認為我可以做 "很接近。你只需要多載你要創建的類,讓它接受你要傳遞給它的傳入表單的一個PARAMETER。
public class MyCustomMenuHandler : IContextMenuHandler : IContextMenuHandler
{
private FormBrowser _formBrowser;
public MyCustomMenuHandler()
{
//span>如果沒有表單引數,則采用任何代碼。
}
public MyCustomerMenuHandler(FormBrowser incomingForm )。
{
//現在,你有了這個表單,可以做任何你需要的事情。
_formBrowser = incomingForm;
}
}
然后,只需用引數進行呼叫
var mnuHndlr = new MyCustomMenuHandler( theOriginalFormBrowserObjectVariable ) 。
而在你的案例中,是的,你可以用 "this "來傳遞
var mnuHndlr = new MyCustomMenuHandler( this ) 。
uj5u.com熱心網友回復:
這很簡單。按照這個骨架代碼:
public class FormBrowser : Form
{
MyCustomMenuHandler menuHandler。
void InitializeComponent()
{
menuHandler = new MyCustomMenuHandler(this)。
}
}
public class MyCustomMenuHandler : IContextMenuHandler
{
public MyCustomMenuHandler(FormBrowser formBrwoser)
{
瀏覽器 = formBrowser;
}
public FormBrowser Browser { get; }
構造一個MyCustomMenuHandler所需的所有資訊都應該在其建構式上提供。使用this關鍵字在FormBrowser的任何方法中獲得對當前表單的參考
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326913.html
標籤:
上一篇:Numpy從一個串列中進行追加
