PDA

View Full Version : سوال: چگونگی اضافه کردن کنترل به tab page



top7news
جمعه 03 خرداد 1387, 18:25 عصر
سلام
من یه فرم دارم که توش tab control دارم که tab page های اون با توجه به محتویات بانکم ساخته میشه ، حالا می خوام با انتخاب هر tab page یک datagridview توش ساخته بشه و نشون داده بشه که من بعدا بتونم توش اطلاعات بریزم.
کسی میدونه چه طور این کارو کنم ؟این پایین کدی که خودم امتحان کردم و جواب نداد و میزارم :


tabControl1.TabPages[q[2].ToString ()].Controls.Add(dg1);

Mahdi.Kiani
جمعه 03 خرداد 1387, 18:34 عصر
tabPage1.Controls.Add(new DataGridView());





tabControl1.TabPages[0].Controls.Add(new DataGridView());








tabControl1.TabPages["tabPage1"].Controls.Add(new DataGridView());

top7news
جمعه 03 خرداد 1387, 18:39 عصر
ممنون آقای کیانی ولی این error رو میده :

Object reference not set to an instance of an object.

Mahdi.Kiani
جمعه 03 خرداد 1387, 18:45 عصر
ممنون آقای کیانی ولی این error رو میده :

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

top7news
جمعه 03 خرداد 1387, 18:55 عصر
ممنون آقای کیانی
خطاشو رفع کردم،حالا مشکلی که دارم اینه که datagridview رو توی تمام tab page ها تولید نمیکنه.

و سئوال دیگم هم اینه که این datagridview که ساخته میشه رو چه طوری میشه به property هاش دسترسی داشته باشم ؟؟

Mahdi.Kiani
جمعه 03 خرداد 1387, 19:09 عصر
ممنون آقای کیانی

و سئوال دیگم هم اینه که این datagridview که ساخته میشه رو چه طوری میشه به property هاش دسترسی داشته باشم ؟؟

اون کدی که من به صورت فوق براتون نوشتم نحوه اضافه کردن یک گرید را به یک tabpage نشون می ده..
حالا اگر می خواهید، که قبل از اضافه کردن به tabpage ، خواص گرید را تنظیم کنید مثل DataSource و ... از روش زیر استفاده کنید




DataGridView dgrd1 = new DataGridView();
/*



set the dgrd1 properties

*/

tabPage1.Controls.Add(dgrd1);






خطاشو رفع کردم،حالا مشکلی که دارم اینه که datagridview رو توی تمام tab page ها تولید نمیکنه.







خوب این طبیعی است، چون هر نمونه ای از آبجکتی تنها می تونه در یک کنترل در یک لحظه قرار بگیره
در واقع شما نمی توانید، یک کنترل گرید را در آن واحد هم به TabPage1 و هم به TabPage 2 اضافه کنید

برای این کار برای هر TabPage یک Inastance جدید از Grid باید ایجاد کنید
مثلا



DataGridView dgrd1 = new DataGridView();
/*



set the dgrd1 properties

*/

tabPage1.Controls.Add(dgrd1);


DataGridView dgrd2 = new DataGridView();
/*



set the dgrd2 properties

*/

tabPage2.Controls.Add(dgrd2);

top7news
جمعه 03 خرداد 1387, 19:14 عصر
واقعا ممنون
کمک خیلی بزرگی کردین ، جالبه اینجاس که من همیشه تو این نکات جزیی اصلا دقت نمیکنم ، بازم ممنون .

top7news
جمعه 03 خرداد 1387, 20:25 عصر
بازم سلام
بازم یه مشکل در همین رابطه ، این کد زیر و نگاه کنید :


DataGridView dg1 = newDataGridView();

while (q.Read())
{
i = 0;
if (q[0].ToString() == shr.ToString())
{
tabControl1.Visible = true;
tabControl1.TabPages.Add(q[2].ToString());
}
i++;
}
tabControl1.TabPages[i-1].Controls.Add(dg1);


مقدار q توسط یه دیتا ریدر خونده میشه و با توجه به شرط حلقه تا موقعی که توی جدولم مقدار دارم این حلقه کار میکنه ، i هم مقدارش برابر چرخش حلقه است .
حالا مشکل من توی dg هست که شماره اش رو نمیدونم چه توی تعریف کنم که با توجه به شمارنده حلقه تولید بشه یعنی به اینصورت که به ازای tab page(i-1) داشته باشم dg(i) که برابر شماره دیتا گرید هام بشه.آقای کیانی دست خودتو میبوسه بازم.
پیشاپیش ممنون

Mahdi.Kiani
جمعه 03 خرداد 1387, 21:17 عصر
tabControl1.TabPages.Clear();

DataGridView dgv = null;

for (int i = 0; i < 5; i++)
{
dgv = new DataGridView(); // cerate Instance From DataGrid View
dgv.Name = "dgv" + (i + 1).ToString(); // set Name Property For Grid

/*

Set Other Property Such As Data Source & ... For DataGridView Here

*/

tabControl1.TabPages.Add(String.Format("Tab Pages ( {0} )", i + 1)); // Add TabPage to tabControl

tabControl1.TabPages[i].Controls.Add(dgv); // Add GridView To tabPage

}





من یه حلقه فرضی 5 تایی گذاشتم
شما می تونید داده هاتون را از هر منبعی که دارید بخونین
موفق باشید

top7news
جمعه 03 خرداد 1387, 21:35 عصر
اگه جا داشت و میشد منم یه حلقه n تایی برای تشکر ازتون مینوشتم
ممنون ، کمک بزرگی کردین