【问题标题】:How handle event for dynamically generated tabpages in c#?如何处理c#中动态生成的标签页的事件?
【发布时间】:2019-10-12 13:37:37
【问题描述】:

我正在为动态创建的标签页添加一个事件。但是,当我与 UI 交互时,不会调用该事件。帮助! :)

我已经在下面尝试过,但不起作用:

Event handling for dynamically generated controls

C# TabControl TabPage passing events

    private void FileListView_DoubleClick(object sender, EventArgs e)
    {
        if (FileListView.SelectedIndices != null && FileListView.SelectedIndices.Count > 0)
        {
            FileListViewTask.Expand(settingsForm, FileListView, FileListView.SelectedIndices[0]);
            string filepathSelected=FileListViewTask.getFilePath(FileListView.SelectedIndices[0]);
            if (filepathSelected != "")
            {
                bool tabAlreadyExists = false;
                foreach (TabPage tabpage in SourceTabControl.TabPages)
                {
                    if (tabpage.GetNextControl(new Label(), true).Text == filepathSelected)
                    {
                        SourceTabControl.SelectTab(tabpage);
                        tabAlreadyExists = true;
                        break;
                    }

                }
                if (!tabAlreadyExists)
                {
                    TabPage tabpage = (new CodePageGenerator(filepathSelected)).createPage();
                    tabpage.Parent = SourceTabControl;
                    tabpage.MouseDoubleClick += new MouseEventHandler(tabpage_MouseDoubleClick);
                    tabpage.Click += new EventHandler(this.tabpage_Click);
                    SourceTabControl.SelectTab(tabpage); 
                }
            }
        }
    } 

    void tabpage_Click(object sender, EventArgs e)
    {
        TabPage tabpage = (TabPage)sender;
        SourceTabControl.TabPages.Remove(tabpage);
        MessageBox.Show("yow");
    }

    void tabpage_MouseDoubleClick(object sender, MouseEventArgs e)
    {
        TabPage tabpage = (TabPage)sender;
        SourceTabControl.TabPages.Remove(tabpage);
        MessageBox.Show("yow");
    }

更新

上面的代码在 TabPage 内容内发生点击时有效。但是点击标签时不起作用

【问题讨论】:

    标签: c# tabpage


    【解决方案1】:

    我已经想通了!

    关键是给TabControl而不是TabPage添加一个事件! 单击选项卡按钮的事件将传递给 TabControl。

    初始化事件处理程序

        SourceTabControl.MouseDoubleClick += new MouseEventHandler(SourceTabControl_MouseDoubleClick);
    

    那么,

        private void SourceTabControl_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            SourceTabControl.TabPages.Remove(SourceTabControl.SelectedTab);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多