PDA

View Full Version : رویداد mousemove روی تب های تب کنترل میشه؟



H:Shojaei
یک شنبه 16 فروردین 1394, 17:31 عصر
سلام...
من میخوام وقتی روی یک تب رفتم نه با کلیک تب کانتنت نشون داده بشه و در اولین نمایش هم هیچ تب پیجی نشون داده نشه همیچین چیزی میشه؟
مثل سایت ها که منو دارن دقیقا اینطوری باشه یعنی هیچی نباشه وقتی روی یکی از تب ها موس رو حرکت دادیم محتواش نشون داده بشه...
و این که میشه استایل تبها رو هم تغییر داد؟؟

am_al_59
یک شنبه 16 فروردین 1394, 18:08 عصر
این کنترل رویدادی که منظور شمارو تأمین کنه نداره اما میتونین از این کد برای محاسبه مختصات حرکت ماوس و انجام کاری که میخواهید استفاده کنید
ابتدا رویداد moseMove تب رو برار با متد tabControl1_MouseMove قرار بدین سپس این کد رو برای متد بنویسین



void tabControl1_MouseMove(object sender, MouseEventArgs e)
{
Rectangle moveRect = new Rectangle(e.X, e.Y, 1, 1);
for (int i = 0; i < tabControl1.TabCount; i++)
if (tabControl1.GetTabRect(i).IntersectsWith(moveRect ))
tabControl1.SelectedIndex = i;
}

H:Shojaei
یک شنبه 16 فروردین 1394, 18:25 عصر
ممنون من یک منوی شکیل میخوام و به دلیل این که راحت بشه کارم میخواستم این کارو کنم اگر درد سر داشته باشه که یه منو خودم میسازم با پنل و باتن...
این مشکل که با کمک شما حل شد ولی این که بشه تب ها رو استایل دهی کرد و این که اولین بار پیج یا همون بخش کانتنت یا محتوای تبها هیچکدوم نمایش داده نشه اون رو چکار کنم!؟
مهمتر از همه همین استایل تبهاست و مخفی کردن همه تب کانتنتها...

با پنل و باتن هم ساختم تا یه جاییش ولی الان مشکلم اینه که پنلها که روی هم قرار میگیرن چون مکان شون روی فرم باید روی هم باشه که یکیو مخفی کنم اون یکیو نمایش بدم رو هم که میذارم تو فرم تو هم میرن اونی که بیرونه پرنت اون داخلیه میشه و همه چی به هم میریزه داخلیه کلا زیر مجموعه بیرونیه میشه و نمایش داده نمیشه...!!!

am_al_59
یک شنبه 16 فروردین 1394, 18:35 عصر
Properties همون تب کنترلتونو نگاه کنین Property داره به نام TabPages جلوش عبارت Collection و کلید Brows داره
روی کلید Brows کلیک کنید پنجره مدیریت تک تک tab ها به همراه هدر و قابلیت گذاشتن تصاویر، رنگ و Border رو دارید
از کامپوننت هایی مثل Telerik و DevExpress هم میتونین استفاده کنین که قدرت بیشتری در تغییر استایل دارن
تست کنین ببینین کدوم بیشتر براتون خوبه

H:Shojaei
یک شنبه 16 فروردین 1394, 19:04 عصر
بله هست ولی با پروپرتی هایی که tabPage رو تو ویوی خود فرم انتخاب میکنیم تفاوتی نداره... همش پروپرتی های tabPage هست نه تبها یا همون هدر...
تو این پروپرتی ها هدرش رو نمیشه استایل دهی کرد بخشی واسه این موضوع نداره یا شاید من ندیدم...!

am_al_59
یک شنبه 16 فروردین 1394, 19:28 عصر
با کد هر کار دلت بخواد میتونی بکنی اما به نظر من ارزش نداره توی ویندوز فرم اینکارو کرد این کد ساده رو میتونی تا دلت بخواد پیچیده کنی

private void tabControl1_DrawItem(object sender, DrawItemEventArgs e)
{
Font TabFont;
Brush bgColor = new SolidBrush(Color.White);
Brush txtColor = new SolidBrush(Color.Red);
if (e.Index == tabControl1.SelectedIndex)
TabFont = new Font("Tahoma", 12, FontStyle.Bold);
else
TabFont = new Font("arial", 10);
string TabName = tabControl1.TabPages[e.Index].Text;
e.Graphics.FillRectangle(bgColor, e.Bounds);
Rectangle rec = e.Bounds;
rec = new Rectangle(rec.X, rec.Y, rec.Width, rec.Height - 3);
e.Graphics.DrawString(TabName, TabFont, txtColor, rec, new StringFormat());
}


برای اینکه استایل رو بصورت دستی تعریف کنی اول رویداد DrawItem رو برابر متذ بالا قرار بده و در Propertyهای تب کنترلت DrawMode رو برابر OwnerDrawFixrd قرار بده

H:Shojaei
یک شنبه 16 فروردین 1394, 19:30 عصر
پیچیده میشه همون باتون و پنل بهتره...
ممنون...