Создание нового события с объектами - PullRequest
0 голосов
/ 27 сентября 2010

Это в C #

Поэтому я пытаюсь создать событие для ProgressChanged для нескольких элементов управления webBrowser.Все они создаются динамически, а также индикатор выполнения.Так что я не могу до этого позвонить.То, что я делаю, это прохождение индикатора выполнения через запущенные массивы объектов.Наконец-то доходит до последнего метода, в котором я создаю браузер, и мне нужно создать событие Browser.ProgressChanged.

Вот код ....

private object[] runTests(string banText, object tabControlName, 
        object progressBar, int runThisTest, string testName)
    {
        object[] theReturn = null;
        if (stopTests == false)
        {
            var tabPageBrowser = new TabPage();
            var Browser = new WebBrowser();

            (tabControlName as TabControl).TabPages.Add(tabPageBrowser);
            tabPageBrowser.Name = tabControlName.ToString();
            if (banText == "999999999")
            {
                tabPageBrowser.Text = "History";
            }
            else
            {
                tabPageBrowser.Text = testName;
            }
            tabPageBrowser.Font = new System.Drawing.Font("Trebuchet MS", 8.25F,
                System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            Browser.Dock = DockStyle.Fill;
            Browser.Url = new Uri(testStrings(runThisTest, banText));
            Browser.Name = tabControlName.ToString();
            Browser.ScriptErrorsSuppressed = true;
            tabPageBrowser.Controls.Add(Browser);
            Browser.ProgressChanged += new WebBrowserProgressChangedEventHandler(Browser_ProgressChanged);

            try
            {
                while (Browser.ReadyState != WebBrowserReadyState.Complete)
                {
                    Application.DoEvents();
                }
            }
            catch
            {
                return null;
            }
            IntPtr pHandle = GetCurrentProcess();
            SetProcessWorkingSetSize(pHandle, -1, -1);

            object[] browserObjects = new object[2];
            browserObjects[0] = tabPageBrowser;
            browserObjects[1] = Browser;
            if(browserObjects != null)
            {
                theReturn = browserObjects;
            }
        }
        return theReturn;
    }

Теперь мой вопрос:Как я могу добавить объект «progressBar» при создании события, чтобы я мог вызвать его, когда событие было запущено.Я в основном создаю единый индикатор выполнения для 5+ элементов управления WebBrowser и связываю их прогресс.Так что по какой-то причине я попытался добавить объект в метод, и он потерпел неудачу на мне.Пожалуйста, помогите и спасибо!

1 Ответ

1 голос
/ 27 сентября 2010
            Browser.ProgressChanged += Browser_ProgressChanged;
...

        void Browser_ProgressChanged(object sender, WebBrowserProgressChangedEventArgs e) {
            if (e.MaximumProgress > 0) {
                int prog = (int)(100 * e.CurrentProgress / e.MaximumProgress);
                progressBar1.Value = prog;
            }
        }

        private ProgressBar progressBar1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...