PDA

View Full Version : مبتدی: TextBox داینامیک



ghazal_mohammady
پنج شنبه 30 مرداد 1393, 09:04 صبح
عرض سلام و ادب

من میخوام یه تکس باکس داشته باشم که وقتی کاربر یه عدد توش وارد میکنه به همون تعداد تکس باکس اضافه شه بعد میخوام اگه از پنج بیشتر وارد شد، پنج تا تکس باکس رو تو یه ستون و بقیه رو تو ستون کنارش ایجاد کنه، یعنی ستون های پنج تایی کنار هم، الان این کد رو تو تکس باکس مورد نظرم نوشتم :


if(StepPay.Text!="")
{

int i = int.Parse(StepPay.Text);
for (int j = 1; j <= i; j++)
{
TextBox t = new TextBox();
TextBox l = new TextBox();
l.Location = new Point(StepPay.Location.X + j + 100, StepPay.Location.Y + j*30);
l.Text = "مرحله ی " +j + ":";
groupBox5.Controls.Add(l);
t.Location = new Point(StepPay.Location.X+j, StepPay.Location.Y+ j*30);
groupBox5.Controls.Add(t);
}

اما نمیتونم دو ستونه ش کنم
ممنون میشم راهنماییم کنید.

NasimBamdad
پنج شنبه 30 مرداد 1393, 09:13 صبح
برای منم جالبه این تاپیک دوستان کسی نمی دونه ؟

omid nasri
پنج شنبه 30 مرداد 1393, 12:02 عصر
این کار راحته، ببین ، مگه تکست باکس پشت سر هم عمودی پنج تا قرار نمی گیره؟خوب در دستور یک IF بزار که اگر تعداد حلقه For بیشتر از 5 شد، وارد IF بشه در این فقط یک کار انجام می دی، توضیح اینجوری هستش ، اگه وارد If شد width باید برابر بشه با همون مقدار اولی + یک مقدار معین که به صورت دینامیک برای هر ستون اضافه میشه،یعنی اگه If اجرا شد پس از هر 5 بار اجرای حلقه یک مقدار به Width اضافه میشه امیدوارم متوجه شده باشی.
نکته : در IF باید یک مقدار متغییر تعریف بشه که پس از هر 5 بار اجرای حلقه مقدار If عوض بشه.
خواستی بگو برنامه رو بسازم ولی من WPF کار، دوم سعی کن خودت بسازی الکی نیای بگی بنویس.اگه نتونستی بگو/.

ghazal_mohammady
پنج شنبه 30 مرداد 1393, 12:41 عصر
این کد چطوره؟


int i = int.Parse(StepPay.Text);
for (int j = 1; j <i; j++)
{
TextBox t = new TextBox();
TextBox l = new TextBox();
l.Location = new Point(StepPay.Location.X + j + 100, StepPay.Location.Y + j*30);
l.Text = "مرحله ی " +j + ":";
groupBox5.Controls.Add(l);
t.Location = new Point(StepPay.Location.X+j, StepPay.Location.Y+ j*30);
groupBox5.Controls.Add(t);
if (j == 5)
{
while (j < i)
{
int k = 53;

l.Location = new Point(StepPay.Location.X + j - 200, StepPay.Location.Y + j* 30);
l.Text = "مرحله ی " + j + ":";
groupBox5.Controls.Add(l);
t.Location = new Point(StepPay.Location.X + j-300, StepPay.Location.Y + j * 30);
groupBox5.Controls.Add(t);
j++;
}
}

ghazal_mohammady
پنج شنبه 30 مرداد 1393, 17:24 عصر
کسی راهنمایی نمیکنه ؟
این کد همه چهارتای ستون اولو میزنه بعد هشتمی از ستون دوم چراشو نمیدونم:


int i = int.Parse(StepPay.Text);

int k = 1;
for (int j = 1; j <i; j++)
{
TextBox t = new TextBox();
TextBox l = new TextBox();
l.Location = new Point(StepPay.Location.X + j + 100, StepPay.Location.Y + j*30);
l.Text = "مرحله ی " +j + ":";
groupBox5.Controls.Add(l);
t.Location = new Point(StepPay.Location.X+j, StepPay.Location.Y+ j*30);
groupBox5.Controls.Add(t);
if (j == 5)
{
while (j < i)
{
l.Location = new Point(StepPay.Location.X + k + 200, StepPay.Location.Y+k*30);
l.Text = "مرحله ی " + j + ":";
groupBox5.Controls.Add(l);
t.Location = new Point(StepPay.Location.X + k + 300, StepPay.Location.Y+k*30);
groupBox5.Controls.Add(t);
j++;
k++;
}
}

sohil_ww
پنج شنبه 30 مرداد 1393, 17:28 عصر
ببین می تونی از table panel استفاده کنی
فکر کنم راحت تر کنه کارتو

ghazal_mohammady
پنج شنبه 30 مرداد 1393, 21:55 عصر
یعنی چطوری؟

mhabat
جمعه 31 مرداد 1393, 00:05 صبح
سلاک . خلاصه و مفید بهت بگم!

شما تعداد text box رو از ورودی بگیر! بعد داخل حلقه هم که گزاشتی خوب حالا با دستور new textbox به به تعداد حلقه textbox وارد فرمت بکن با دستور controls.add

،قط این که وقتی داری با دستور new textbox() تکست باکی میسازی یادت نره که اسمهاشون رو متفاوت قرار بدیو

برای این که 5 تا 5 تا ستونی قرار بگیره یه متغیر استاتیک تعریف کن که بگو بهش هر تکست باکسی که اضافه شد یک واحد افزایش پیدا کن.

اگر مقدار این متغیر استاتیک باقی ماندش بر 5 برابر صفر بود بگو که مکان x تکست باکس های بعد مثلا 100 پوینت بیاد جلو تر.

موفق باشی