PDA

View Full Version : سوال: tabpage در tabcontrol دارای قابلیت visable هست؟



ashe405
دوشنبه 26 تیر 1391, 20:32 عصر
سلام دوستان
من می خواستم ببینم میشه با tabcontrol ی که داری یه سری tabpage هست
فقط یه tabpage خاص با زدن یه دکمه دیده بشه و بقیه دیده نشن یه چیز توی مایه های visable برای هر tabpage داشته باشیم که بتوانیم آن را false یا true کنیم
سپاسگزارم

the king
دوشنبه 26 تیر 1391, 21:05 عصر
سلام دوستان
من می خواستم ببینم میشه با tabcontrol ی که داری یه سری tabpage هست
فقط یه tabpage خاص با زدن یه دکمه دیده بشه و بقیه دیده نشن یه چیز توی مایه های visable برای هر tabpage داشته باشیم که بتوانیم آن را false یا true کنیم
سپاسگزارم

موقعی که قرار نشون داده نشوند با TabPages.Remove حذف شون کنید، مثلا :

tabControl1.TabPages.Remove(tabPage1);


و موقعی که لازمه دوباره نشون اش بدهید :

tabControl1.TabPages.Insert(0, tabPage1);

Mahmoud.Afrad
دوشنبه 26 تیر 1391, 21:22 عصر
برای جلوگیری از دیدن بقیه تب ها میتونید کاری کنید که فقط یک تب خاص دیده بشه و اگر روی تبهای دیگر کلیک شد باز هم به تب مورد نظر برگرده.
private void tabControl1_SelectedIndexChanged(object sender, EventArgs e)
{
tabControl1.SelectedIndex = 1;
}

private void Form1_Load(object sender, EventArgs e)
{
tabControl1.SelectedIndex = 1;
}
1 اندیس تب مورد نظر هست که میتونید از یک متغیر استفاده کنید و اون رو مقداردهی کنید.
یا اینکه برای تب کنترل enable رو false کنید و اون وقت تب مورد نظر رو سلکت کنید.

aradrobo
دوشنبه 26 تیر 1391, 21:33 عصر
سلام . از من خواستید که کمک تان کنم . نمیشه مخفیش کرد به صورت ویزیبل ولی میشه ترفند های زیادی زد . بهترینش اینه که آقای mafaman2003 (http://barnamenevis.org/member.php?71297-mafaman2003) گفتن . اگر متوجه نشدین که چی گفتن بگین که من کامل توضیح بدم . راه های دیگه هم هست . بستگی به این داره که می خواین برنامه دقیقاً برای چه چیزی ویزیبل بشه ؟ من می تونم بهتون ترفند بدم

tooraj_azizi_1035
دوشنبه 26 تیر 1391, 21:35 عصر
سلام
TabControl1.TabPages[3].Visible=false;

ashe405
دوشنبه 26 تیر 1391, 21:41 عصر
موقعی که قرار نشون داده نشوند با TabPages.Remove حذف شون کنید، مثلا :

tabControl1.TabPages.Remove(tabPage1);


و موقعی که لازمه دوباره نشون اش بدهید :

tabControl1.TabPages.Insert(0, tabPage1);


ممنون ولی آخه داداش من کلی توش اطلاعات دارم اگه بخوام پاک بشه که اصلا نمی گذاشتمش البته اگه من منظورتونو درست برداشت کردم

the king
دوشنبه 26 تیر 1391, 22:31 عصر
ممنون ولی آخه داداش من کلی توش اطلاعات دارم اگه بخوام پاک بشه که اصلا نمی گذاشتمش البته اگه من منظورتونو درست برداشت کردم

من متوجه شده بودم که شما چه کاری می خواهید انجام بدهید، عملا امتحان اش کنید.
حافظه TabPage با حذف شدن اش از لیست یک TabControl پاک نمیشه، صرفا از لیست TabPage هایی که در اون لحظه نمایش داده می شوند حذف میشه، اون TabControl
تا زمانی که فرم در حافظه است با اطلاعات داخلش به همون شکل حفظ میشه، حتی اگه دیگه جایی نمایش اش ندهید. اطلاعاتی که داخل اون TabPage وارد کرده اید
همونطور باقی مونه و در خلال مخفی و نمایش دادن ها پاک نمیشه.

ashe405
چهارشنبه 28 تیر 1391, 11:57 صبح
من متوجه شده بودم که شما چه کاری می خواهید انجام بدهید، عملا امتحان اش کنید.
حافظه TabPage با حذف شدن اش از لیست یک TabControl پاک نمیشه، صرفا از لیست TabPage هایی که در اون لحظه نمایش داده می شوند حذف میشه، اون TabControl
تا زمانی که فرم در حافظه است با اطلاعات داخلش به همون شکل حفظ میشه، حتی اگه دیگه جایی نمایش اش ندهید. اطلاعاتی که داخل اون TabPage وارد کرده اید
همونطور باقی مونه و در خلال مخفی و نمایش دادن ها پاک نمیشه.
سلام من همین کار رو کردم ولی هر وقت اون روی دکمه که این دستور رو نوشتم کلیک می کنم یه بار دیگه اون صفحه رو اینسرت می کنه چون دستور اینسرت داره حالا باید یه شرط بذارم که اگه اون صفحه بود بازش نکنه ولی کدشو بلد نیستم
میشه راهنمایی کنین
این کد دکمم هس


tabControl_Main.TabPages.Remove(tabPage1);
tabControl_Main.TabPages.Remove(tabPage2);
tabControl_Main.TabPages.Remove(tabPage9);
tabControl_Main.TabPages.Remove(tabPage4);
tabControl_Main.TabPages.Remove(tabPage5);
tabControl_Main.TabPages.Remove(tabPage6);
tabControl_Main.TabPages.Remove(tabPage7);
tabControl_Main.TabPages.Remove(tabPage8);
tabControl_Main.TabPages.Insert(0, tabPage3);
tabControl_Main.SelectTab(0);

amir-aa
چهارشنبه 28 تیر 1391, 12:37 عصر
میتونید از containerها مثلا از panel استفاده کنید و راحت visibe/un visibleکنید

ashe405
چهارشنبه 28 تیر 1391, 12:43 عصر
سلام
ممنون از اینکه جواب دادین ولی اونجوری باید 8 تا پنل رو روی هم بندازیم فکر نکنم جالب بشه
این نباید سخت باشه میشه طور دیگر نوشت بایک flag سراسری ولی می خوام اصولی شو یاد بگیرم
ممنون میشم از دوستان کمکم کنن
که اگه مثلا بفهمم tabpage3 فعال هس دیگه این دستور رو انجام نده ممنون

ashe405
چهارشنبه 28 تیر 1391, 13:12 عصر
سوالم دقیق اینه که

سلام سوالم اینه که من یه tabcontrol دارم که دارای یه سری tabpage هستش اون وقت من چندتا دکمه هم دارم که همون اول وقتی فرم لود میشه همه tabpage ها ریمو می شن تا دیده نشن
بعد بازدن یه دکمه tabpage مورد نیاز باز میشه حالا من می خوام هر وقت دکمه ی که می زنم اگه tabpage مربوط بهش باز شده بود دیگه باز نشه
می خواستم ببینم باید شرصشو چی بذارم تا درست بشه



private void FormMain_Load(object sender, EventArgs e)
{
tabControl_Main.TabPages.Remove(tabPage1);
tabControl_Main.TabPages.Remove(tabPage2);
tabControl_Main.TabPages.Remove(tabPage3);
tabControl_Main.TabPages.Remove(tabPage4);
tabControl_Main.TabPages.Remove(tabPage5);
tabControl_Main.TabPages.Remove(tabPage6);
tabControl_Main.TabPages.Remove(tabPage7);
tabControl_Main.TabPages.Remove(tabPage8);
}


private void btn_AdministrativeSearch_Click(object sender, EventArgs e)
{
tabControl_Main.TabPages.Remove(tabPage9);
tabControl_Main.TabPages.Remove(tabPage2);
tabControl_Main.TabPages.Remove(tabPage3);
tabControl_Main.TabPages.Remove(tabPage4);
tabControl_Main.TabPages.Remove(tabPage5);
tabControl_Main.TabPages.Remove(tabPage6);
tabControl_Main.TabPages.Remove(tabPage7);
tabControl_Main.TabPages.Remove(tabPage8);
tabControl_Main.TabPages.Insert(0, tabPage1);
tabControl_Main.SelectTab(0);
}





حالا وقتی که فرم لود میشه و من بخوام دوبار دکمه btn_AdministrativeSearch بزنم دوبار طبق این تابع insert میشه tabPage1 حالا من می خوام یه شرط بزارم که وقتی tabPage1 هست دیگه این دستورات رو احرا نکنه
که البته میشه با یک flag سراسری این کار رو کرد ولی من می خوام اگه امکانش هس اصولی کار کنم ممنون

Mahmoud.Afrad
چهارشنبه 28 تیر 1391, 13:37 عصر
با یک حلقه تب پیج های دیگر رو حذف کن. اگر تعداد تب پیج ها صفر شد باید اضافه کنید وگرنه از قبل بوده. با متد زیر
private void addTabPage(TabControl tabControl, TabPage tabPage)
{
foreach (TabPage tp in tabControl.TabPages)
{
if (tp != tabPage)
tabControl.TabPages.Remove(tp);
}
if (tabControl1.TabPages.Count == 0)
tabControl.TabPages.Add(tabPage);
}اینطوری فراخوانی کن
addTabPage(tabControl1, tabPage3);