簡體   English   中英

使用鼠標中鍵關閉winforms選項卡控件上的選項卡

[英]Close tab on winforms tab control with middle mouse button

有沒有簡單的(5行代碼)方法來做到這一點?

刪除單擊鼠標中鍵的選項卡的最短代碼是使用LINQ。

確保事件已連線
tabControl1.MouseClick += delegate(object sender, MouseEventArgs e) { var tabControl = sender as TabControl; var tabs = tabControl.TabPages; if (e.Button == MouseButtons.Middle) { tabs.Remove(tabs.Cast<TabPage>().Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location)).First()); } };
而對於處理程序本身
 private void tabControl1_MouseClick(object sender, MouseEventArgs e) { var tabControl = sender as TabControl; var tabs = tabControl.TabPages; if (e.Button == MouseButtons.Middle) { tabs.Remove(tabs.Cast<TabPage>() .Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location)) .First()); } } 
如果你正在爭取最少量的線路,這里就是一行
 tabControl1.MouseClick += delegate(object sender, MouseEventArgs e) { var tabControl = sender as TabControl; var tabs = tabControl.TabPages; if (e.Button == MouseButtons.Middle) { tabs.Remove(tabs.Cast<TabPage>().Where((t, i) => tabControl.GetTabRect(i).Contains(e.Location)).First()); } }; 

沒有LINQ的解決方案不那么緊湊和美觀,而且實際:

private void TabControlMainMouseDown(object sender, MouseEventArgs e)
{
    var tabControl = sender as TabControl;
    TabPage tabPageCurrent = null;
    if (e.Button == MouseButtons.Middle)
    {
        for (var i = 0; i < tabControl.TabCount; i++)
        {
            if (!tabControl.GetTabRect(i).Contains(e.Location))
                continue;
            tabPageCurrent = tabControl.TabPages[i];
            break;
        }
        if (tabPageCurrent != null)
            tabControl.TabPages.Remove(tabPageCurrent);
    }
}

沒有足夠的積分向提供的解決方案發布評論,但它們都有相同的缺陷:刪除的標簽中的控件不會被釋放。

問候

你可以這樣做:

private void tabControl1_MouseClick(object sender, MouseEventArgs e)
{
     if (e.Button == MouseButtons.Middle)
     {
          // choose tabpage to delete like below
          tabControl1.TabPages.Remove(tabControl1.TabPages[0]);
     }
}

基本上,您只需在選項卡控件上單擊鼠標,僅在單擊中間按鈕時刪除頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM