Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Windows Forms
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2016, 11:16   #1
Unnika
Пользователь
 
Регистрация: 31.03.2016
Сообщений: 59
Восклицание Вкладки в TabControl

Здравствуйте , такой вопрос , когда открываешь сайт в браузере через awesomium , и переходишь на другие страницы , то открываются вкладки тех страниц на которые нажимал
Вопрос : как сделать чтобы моя первая вкладка была всегда активная , а на последующие вкладки автоматически не перекидывало меня
Спасибо.
Unnika вне форума Ответить с цитированием
Старый 06.04.2016, 11:39   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а как вы вкладки реализовали?
у вас же где-то ест событие создания новой.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.04.2016, 11:47   #3
Unnika
Пользователь
 
Регистрация: 31.03.2016
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а как вы вкладки реализовали?
у вас же где-то ест событие создания новой.
Код:
 private void webControl_ShowCreatedWebView(object sender, ShowCreatedWebViewEventArgs e)
        {
            AddPage_ClickReference(e);
        }
Unnika вне форума Ответить с цитированием
Старый 06.04.2016, 11:50   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Весь код покажите, с AddPage_ClickReference и всеми остальными вашими функциями вызываемыми в нем.

Скорее вы просто переключаете на новую вкладку где-то там.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.04.2016, 11:53   #5
Unnika
Пользователь
 
Регистрация: 31.03.2016
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Весь код покажите, с AddPage_ClickReference и всеми остальными вашими функциями вызываемыми в нем.

Скорее вы просто переключаете на новую вкладку где-то там.
вот код


Код:
using Awesomium.Core;
using Awesomium.Windows.Forms;
using System;
using System.Drawing;
using System.Windows.Forms;

namespace click
{
    class TabControlAwesomium
    {
        private Point lastClickPos;
        private TabControl tabControl;
        private WebSessionProvider webSessionProvider;

        /// <summary>
        /// Инициализирует новый экземпляр класса TabControlAwesomium
        /// </summary>
        /// <param name="tabControl">Объект tabControl, с которым будет работать класс</param>
        /// <param name="webSessionProvider">Объект webSessionProvider,  с которым будет работать класс</param>
        public TabControlAwesomium(TabControl tabControl, WebSessionProvider webSessionProvider)
        {
            this.tabControl = tabControl;
            this.webSessionProvider = webSessionProvider;
        }


        /// <summary>
        /// Добавит новую вкладку с WebControl(ом)
        /// </summary>
        public void AddPage()
        {
            WebControl webControl = new_WebControl();

            CreateTabPage(webControl);

        }

        /// <summary>
        /// Добавит новую вкладку с WebControl(ом) и с Uri на который кликнули 
        /// </summary>
        /// <param name="e">e, объект класса ShowCreatedWebViewEventArgs</param>
        public void AddPage_ClickReference(ShowCreatedWebViewEventArgs e)
        {
            WebControl webControl = new_WebControl();

            webControl.Source = e.TargetURL;

            CreateTabPage(webControl);
        }

        /// <summary>
        /// (Внимание! Метод зависит от метода TabControlMouseDown) Закрывает вкладку. Или сделать как здесь http://www.youtube.com/watch?v=DJu2ivQFooc
        /// </summary>
        public void CloseTab()
        {

            for (int i = 0; i < tabControl.TabCount - 1; i++)
            {
                if (tabControl.GetTabRect(i).Contains(tabControl.PointToClient(lastClickPos)))
                {
                    tabControl.TabPages[i].Dispose();
                }
            }

        }

        /// <summary>
        /// Создает на tabControl(е), TabPage с webControl(ом)
        /// </summary>
        /// <param name="webControl">WebControl, с которым будет создавать страницу</param>
        public void CreateTabPage(WebControl webControl)
        {
            tabControl.TabPages.Insert(tabControl.TabCount - 1, "Новая вкладка");
            tabControl.TabPages[tabControl.TabCount - 2].Controls.Add(webControl);
            tabControl.SelectedIndex = tabControl.TabCount - 2;
        }

        /// <summary>
        /// Присвоит текст adressBox(у)
        /// </summary>
        /// <param name="addressBox">объект addressBox, с которым будет работать метод</param>
        public void SetTextAddressBox(AddressBox addressBox)
        {
            if (addressBox.WebControl.Source == null)
            {
                addressBox.AccessibilityObject.Value = "about:blank";
            }
            else
            {
                addressBox.AccessibilityObject.Value = addressBox.WebControl.Source.OriginalString;
            }
        }

        /// <summary>
        /// Задает adressBox(y) webControl, принадлежащий вкладки
        /// </summary>
        /// <param name="addressBox">addressBox с которым будет работать</param>
        /// <param name="Tab">TabPage с которого будет считываться WebControl</param>
        public void SetWebControlInAddressBox(AddressBox addressBox)
        {
            addressBox.WebControl = (WebControl)tabControl.TabPages[tabControl.SelectedIndex].Controls[0];
        }

        /// <summary>
        /// (Определить TabControlMouseDown в событие TabControl.MouseDown) Задает координаты, кликом правой кнопки мыши по вкладке, объекту, для метода CloseTab
        /// </summary>
        /// <param name="e">e - объект события TabControl.MouseDown</param>
        public void TabControlMouseDown(MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                lastClickPos = Cursor.Position;
            }
        }

        /// <summary>
        /// WebControl с некоторыми параметрами
        /// </summary>
        /// <returns>WebControl</returns>
        public WebControl new_WebControl()
        {
            WebControl webControl = new WebControl();
            webControl.Dock = DockStyle.Fill;
       //     webControl.DocumentReady += webControl_DocumentReady;
            webControl.ShowCreatedWebView += webControl_ShowCreatedWebView;

            webSessionProvider.Views.Add(webControl);

            return webControl;
        }

        /// <summary>
        /// Метод для события webControl.DocumentReady. Меняет текст вкладки, когда страница грузится и загружена
        /// </summary>
   //     private void webControl_DocumentReady(object sender, DocumentReadyEventArgs e)
   //     {
     //       ((WebControl)sender).Parent.Text = ((WebControl)sender).Title;
    //    }

        /// <summary>
        /// Метод для события webControl.ShowCreatedWebView. При клике по ссылке, создает новую вкладку с WebControl(ом) и с Uri, на который кликнули
        /// </summary>
        private void webControl_ShowCreatedWebView(object sender, ShowCreatedWebViewEventArgs e)
        {
            AddPage_ClickReference(e);
        }

        /// <summary>
        /// Освободить память webControl(а), на выбранной вкладке
        /// </summary>
        /// <param name="addressBox">addressBox</param>
        public void ClearMemory(AddressBox addressBox)
        {
            Uri uri = (tabControl.TabPages[tabControl.SelectedIndex].Controls[0] as WebControl).Source;

            webSessionProvider.Views.Remove(tabControl.TabPages[tabControl.SelectedIndex].Controls[0] as WebControl); // Не обязательная строка
            tabControl.TabPages[tabControl.SelectedIndex].Controls[0].Dispose();

            WebControl webControl = new_WebControl();
            addressBox.WebControl = webControl;

            webSessionProvider.Views.Add(webControl);

            webControl.Source = uri;

            tabControl.TabPages[tabControl.SelectedIndex].Controls.Add(webControl);
        }

    }
}
Unnika вне форума Ответить с цитированием
Старый 06.04.2016, 11:55   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Изучайте код в CreateTabPage.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.04.2016, 11:57   #7
Unnika
Пользователь
 
Регистрация: 31.03.2016
Сообщений: 59
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Изучайте код в CreateTabPage.
подскажите пожалуйста, это единственное что осталось...
Unnika вне форума Ответить с цитированием
Старый 06.04.2016, 11:59   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так подсказал уже куда смотреть.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переключение вкладок в tabcontrol при клике на элемент внутри вкладки xqr Windows Forms 0 12.09.2015 17:17
TabControl Serebah Общие вопросы Delphi 5 28.12.2011 15:51
TabControl vipbobik C++ Builder 0 20.05.2011 17:36
TabControl как взять надпись открытой вкладки yuran111 Общие вопросы Delphi 3 11.05.2011 14:30