PDA

View Full Version : سوال: چگونه از این کنترل TabControl از طریق کد استفاده کنم



sayan
چهارشنبه 10 فروردین 1390, 13:30 عصر
سلام دوستان عزیز.

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

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

من کد برنامه امو اینجا قرار میدم اگه کسی از دوستان میتونه راهنماییم کنه.


با تشکر

Rejnev
چهارشنبه 10 فروردین 1390, 14:22 عصر
private void button1_Click(object sender, EventArgs e)
{
int a = int.Parse(textBox1.Text);
TabControl tab = new TabControl() { Name = "mytab", Left = 10, Top = 50 };
Controls.Add(tab);
TabPage page;
for (int i = 0; i < a; i++)
{
page = new TabPage() { Name = "page" + i.ToString(), Text = "page" + i.ToString() };
tab.TabPages.Add(page);
}
}

sayan
چهارشنبه 10 فروردین 1390, 14:48 عصر
سلام دوست عزیز در برنامه ام Button ای گذاشتم با نام روش اشتباه که مثل کد شما عمل میکنه.
اگه دقت کنید زمانی که بر روی دکمه اشتباه کلیک میشود یک TabControl بر روی فرم اضافه میشه ولی انگار که کنترل TabControl یخ زده و نمیشه روی Tab Page ها کلیک کرد.

ولی اگه از لیست باکس سمت راست بر روی کنترل Tab Control کلیک کنید و بر روی فرم کلیک کنید تا به فرم اضافه شود میبینید که قابلیت کلیک شدن ، Resize و جابجا شدن و ... را دارد.
منظور من این روش دوم هست که نمیدونم چه جوری پیاده سازیش کنم.

Rejnev
چهارشنبه 10 فروردین 1390, 15:07 عصر
برنامتون فکر کنم با Vs2010 بود نتونستم بازش کنم.
اما به هر حال،
اگه میخواید که کاربر یک مستطیل با موس بکشه و تب کنترلتون به اندازه و مکان اون ساخته بشه، چشم:

sayan
چهارشنبه 10 فروردین 1390, 23:02 عصر
روشی که شما گفتید
راه حل من نبود.

این عکس ضمیمه رو ببینید منظورم روش توی عکس.

مرسی

shadi khanum
پنج شنبه 11 فروردین 1390, 00:15 صبح
این Sample یه tabcontrol ایجاد میکنه و به تعدادی که توی textbox میزنید tabpage درست میشه و واسه نمونه تو هر Tabpage هم یه button ایجاد میکنه
موفق باشید

sayan
پنج شنبه 11 فروردین 1390, 02:28 صبح
بازم تشکر ولی راه حل هایی که دوستان گفتن راه حل من نبود.

ببینید دوستان من میخوام مثل عکسی که نشان دادم Button عمل کنه.

یعنی میخوام عمل انتخاب کنترل TabControl از جعبه ابزار و درگ کردن آن بر روی فرم که باعث ایجاد آن کنترل در فرم میشود را با کلیک بر روی آن Button صورت بگیرد.

راه حلی که دوستان دادن درست هست ولی منظورم من این نیست.

اگر در برنامه ام دقت کنید زمانی که کنترل از جعبه ابزار انتخاب و بر روی فرم درگ میشود قابل جابجا شدن ، تغییر اندازه و ... را دارد ولی در مثال های دوستان اینطور نبود.

Rejnev
پنج شنبه 11 فروردین 1390, 13:38 عصر
آخه مومن، این عکسی که شما گذاشتین ما زمان طراحی فرمه (design) و اون برنامه بنده زمان اجراست. زمان طراحی همچین قابلیتی تا اونجایی که من میدونم نیست. اگه میخوای زمان اجرا قادر به تغییر اندازه کنترلها باشی و جابجاشون کنی یک بحث دیگست.
موفق باشی.

shadi khanum
پنج شنبه 11 فروردین 1390, 13:45 عصر
حالا سوال یه چیز دیگه شد :) شما میخوای بتونی در حالت runtime سایز و جای tabcontrol رو تغییر بدی یا tabpage اضافه کنی که اونم شدنیه :)
این Sample رو نگا کن. اول Create Tab کن، بعد اگه خواستی میتونی مکانشو با موس عوض کنی یا سایزش رو و یا بهش tabpage اضافه کنی
موفق باشی

sayan
جمعه 12 فروردین 1390, 01:38 صبح
دقیقاً دوست عزیز.
من میخوام رویدادهای اول عکس که در حالت Design Mode هست
با کلیک کردن بر روی یک Button اتفاق بیافتد که این راه حل هنوز پیدا نکردم.
البته خانم شادی خانم رفع مشکل کردن ولی نمیتونم برای اون کنترل TabControl از جعبه ابزار سمت راست
پیاده سازیش کنم.

shadi khanum
جمعه 12 فروردین 1390, 13:42 عصر
ولی نمیتونم برای اون کنترل TabControl از جعبه ابزار سمت راست
پیاده سازیش کنم.
یعنی چی؟ میخوای در حال runtime اون پراپرتی های سمت راست رو به همین شکل واسه tabcontrol داشته باشی ؟

shadi khanum
جمعه 12 فروردین 1390, 14:26 عصر
این Sample رو ببین، فک کنم اون چیزی که میخوای . یعنی لیست property های سمت راست واسه اون کنترل tab.
اول create tab رو بزن، بعد property های tabcontrol مثل حالت Design نشون داده میشه و قابل ویرایشه.

exlord
جمعه 12 فروردین 1390, 21:18 عصر
IDesignerHost host; رو ببر بیرونه private void Initialize()
form.Controls.Add(host.CreateComponent(typeof(Butt on), "btn1") as Button);

sayan
شنبه 13 فروردین 1390, 09:47 صبح
نه این تکه کد هم مشکل منو حل نکرد.:گریه:

البته کد آخر شادی خانم درسته درسته

ولی من میخوام با کلیک شدن یک Button انگار اون کنترل TabControl ام از لیست جعبه ابزارام انتخاب شده و بر روی فرم ایجاد بشه.:افسرده:

exlord
شنبه 13 فروردین 1390, 10:37 صبح
نه این تکه کد هم مشکل منو حل نکرد.:گریه:
البته کد آخر شادی خانم درسته درسته
ولی من میخوام با کلیک شدن یک Button انگار اون کنترل TabControl ام از لیست جعبه ابزارام انتخاب شده و بر روی فرم ایجاد بشه.:افسرده:
این کد دقیقا همین کارو میکنه ...شما به جای باتن Tabcontrol بسازی میشه همونی که میخوای .... البته اگه زحمتشو به خودتون بدین ... :عصبانی:

private void button2_Click(object sender, EventArgs e)
{
TabControl tc = host.CreateComponent(typeof(TabControl), "Tabc1") as TabControl;
form.Controls.Add(tc);

TabPage tab1 = host.CreateComponent(typeof(TabPage), "tab1") as TabPage;
tab1.Text = "tab1";
tc.TabPages.Add(tab1);

TabPage tab2 = host.CreateComponent(typeof(TabPage), "tab2") as TabPage;
tab2.Text = "tab2";
tc.TabPages.Add(tab2);
}

sayan
شنبه 13 فروردین 1390, 17:11 عصر
خیلی خیلی ممنون :قلب::قلب:

باور کنین بلد نیستم وگرنه خودم مینوشتم :کف:

خیلی از مشکلاتم حل کردین از لطف بیکرانتان ممنون:تشویق::تشویق::تشویق:

sayan
پنج شنبه 18 فروردین 1390, 14:29 عصر
دوست عزیز آقای exlord سلام یه سوالی داشتتم.

چطور میشه امکانات Layout Toolbar دانت به این برنامه اضافه کرد تا زمانی که چند کنترل انتخاب شده اند نسبت به هم آن تنظیمات را بدهیم.

باتشکر.