Új hozzászólás Aktív témák
-
Shievone
újonc
Sziasztok,
A következő problémával találtam szembe magam:
Adott egy winform és rajta két darab TabControl komponens. Az egyik TabControl-on pedig van néhány TabPage. Két dolgot szeretnék megoldani:
1) A TagPage-ek sorba rendezhetők legyenek adott TabControl-on belül. (drag&drop technika)
2) A TabPage áthelyezhető legyen egyik TabControl-ból a másikba és akár vissza. (drag&drop technika)
Az 1) már készen van. Erre létrehoztam egy saját komponenst az alábbi kóddal, viszont a 2) ponthoz még a neten sem találtam használható infó:
public partial class customTabControl : TabControl
{
public customTabControl()
{
InitializeComponent();
this.AllowDrop = true;
}
protected override void OnMouseDown(MouseEventArgs e)
{
int hoverTabPageIndex = this.getHoverTabIndex();
if (hoverTabPageIndex >= 0)
{
this.Tag = this.TabPages[hoverTabPageIndex];
}
}
protected override void OnMouseUp(MouseEventArgs e)
{
this.Tag = null;
}
protected override void OnMouseMove(MouseEventArgs e)
{
if (e.Button != MouseButtons.Left || this.Tag == null) return;
TabPage draggedTabPage = (TabPage)this.Tag;
this.DoDragDrop(draggedTabPage, DragDropEffects.All);
}
protected override void OnDragOver(DragEventArgs e)
{
if (e.Data.GetData(typeof(TabPage)) == null) return;
TabPage draggedTabPage = (TabPage)e.Data.GetData(typeof(TabPage));
int draggedTabPageIndex = this.TabPages.IndexOf(draggedTabPage);
int hoverTabPageIndex = this.getHoverTabIndex();
if (hoverTabPageIndex < 0) { e.Effect = DragDropEffects.None; return; }
TabPage hoverTabPage = this.TabPages[hoverTabPageIndex];
e.Effect = DragDropEffects.Move;
if (draggedTabPage == hoverTabPage) return;
Rectangle dragTabPageRect = this.GetTabRect(draggedTabPageIndex);
Rectangle hoverTabPageRect = this.GetTabRect(hoverTabPageIndex);
if (dragTabPageRect.Width < hoverTabPageRect.Width)
{
Point tcLocation = this.PointToScreen(this.Location);
if (draggedTabPageIndex < hoverTabPageIndex)
{
if ((e.X - tcLocation.X) > ((hoverTabPageRect.X + hoverTabPageRect.Width) - dragTabPageRect.Width))
this.swapTabPages( draggedTabPage, hoverTabPage);
}
else if (draggedTabPageIndex > hoverTabPageIndex)
{
if ((e.X - tcLocation.X) < (hoverTabPageRect.X + dragTabPageRect.Width))
this.swapTabPages(draggedTabPage, hoverTabPage);
}
}
else
{
this.swapTabPages(draggedTabPage, hoverTabPage);
}
this.SelectedTab = draggedTabPage;
}
private int getHoverTabIndex()
{
for (int i = 0; i < this.TabPages.Count; i++)
{
if (this.GetTabRect(i).Contains(this.PointToClient(Cursor.Position)))
return i;
}
return -1;
}
private void swapTabPages(TabPage draggedTabPage, TabPage hoverTabPage)
{
int draggedTabPageIndex = this.TabPages.IndexOf(draggedTabPage);
int hoverTabPageIndex = this.TabPages.IndexOf(hoverTabPage);
this.TabPages[hoverTabPageIndex] = draggedTabPage;
this.TabPages[draggedTabPageIndex] = hoverTabPage;
this.Refresh();
}Valakinek ötlete esetleg?
Előre is köszönök minden építő jellegű hozzászólást.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Apple MacBook
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- AMD Ryzen 9 / 7 / 5 / 3 5***(X) "Zen 3" (AM4)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Filmvilág
- PayPal
- Xiaomi 15T - reakció nélkül nincs egyensúly
- PlayStation 5
- A fociról könnyedén, egy baráti társaságban
- További aktív témák...
- FANTASZTIKUS áron eladó dobozos új Hp Laptop 17 /Ryzen 5-7520U/8 GB RAM /512 SSD/FHD/IPS/Garancia/
- Corsair 2x16GB 3600MHz (32GB) Vengeance RGB RS DDR4 kit / 105Hó Alza.hu garancia / Beszámítás OK!
- Erős (Lenovo LOQ) gamer Laptop! -i7 13650HX, RTX 4060 8gb, 16gb DDR5, 1tb SSD
- msi Vector 17 HX Nagyképernyős Gamer laptop 17" -35% i9-14900HX 16/1TB RTX 4070 8GB QHD+ 240Hz
- TCL 65C79K MiniLED 144hz Bang&Olufsen
- Telefon felvásárlás!! iPhone X/iPhone Xs/iPhone XR/iPhone Xs Max
- Telefon felvásárlás!! Huawei P20 Lite/Huawei P20/Huawei P30 Lite/Huawei P30/Huawei P30 Pro
- Keresünk iPhone 16/16e/16 Plus/16 Pro/16 Pro Max
- BESZÁMÍTÁS! ASUS TUF GeForce RTX 3080 Ti 12GB videokártya garanciával hibátlan működéssel
- AKCIÓ! ÚJ ASUS TUF GAMING Geforce RTX 5080 OC Edition 16GB VRAM Ray Tracing DLSS4
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
