PDA

View Full Version : استفاده از باکسی که در حال اجرا ساخته شده



cpuram
شنبه 15 بهمن 1390, 20:26 عصر
سلام
کد زیر رو در یک دکمه قرار دادم با اجرای اون یک تکست باکس ساخته شد. اما نمیدونم چطور از باکس در حال اجرا استفاده کنم.
فرض کنید یه تکست باکس رو فرم دارم و یکی در حال اجرا ساخته میشه با این کد حالا چطور این دو را با هم جمع کنم؟


TextBox myText = new TextBox();
myText.Location = new Point(50, 50);
panel1.Controls.Add(myText);

arash69
شنبه 15 بهمن 1390, 20:49 عصر
سلام.
شما می تونید از طریق همون اسمی که تکست باکس درست میشه،بهش دسترسی داشته باشین.به عنوان مثال میشه تکست مربوط به تکست باکس جدید رو با myText.Text در این مثال گرفت.

cpuram
شنبه 15 بهمن 1390, 20:52 عصر
ولی من این کارو انجام دادم ارور میده چون تا اجرا نشه mytext رو نمیشناسه.

arash69
شنبه 15 بهمن 1390, 21:05 عصر
برای اینکه ارور نده میتونین یه object از تکست باکس بسازین و بعد اون تکست باکسی که ساخته میشه رو به اون object مورد نظر assign کنین.
البته این object باید توی جایی مثل Form_Load ساخته بشه.
به عنوان مثال:
TextBox myObject=new TextBox;
بعدش توی کد اون باتن، myText رو بعد از ساخته شدن به این assign کنید.
myObject=myText;
این بار از طریق myObject میشه به تکست اون تکست باکس دسترسی داشت.

nunegandom
شنبه 15 بهمن 1390, 21:36 عصر
سلام, اینو ببین:



private void Form1_Load(object sender, EventArgs e)
{
TextBox tx = new TextBox();
tx.Name = "mytxtbox";
tx.Location = new Point(50, 30);

Button btn = new Button();
btn.Name = "mybtn";
btn.Visible = true;
btn.Enabled = true;
btn.Location = new Point(50, 50);
Controls.Add(tx);
Controls.Add(btn);
btn.Click += new EventHandler(btn_Click);
}

void btn_Click(object sender, EventArgs e)
{
MessageBox.Show((Application.OpenForms[0].Controls["mytxtbox"] as TextBox).Text);
}

cpuram
شنبه 15 بهمن 1390, 21:43 عصر
سلام, اینو ببین:



private void Form1_Load(object sender, EventArgs e)
{
TextBox tx = new TextBox();
tx.Name = "mytxtbox";
tx.Location = new Point(50, 30);

Button btn = new Button();
btn.Name = "mybtn";
btn.Visible = true;
btn.Enabled = true;
btn.Location = new Point(50, 50);
Controls.Add(tx);
Controls.Add(btn);
btn.Click += new EventHandler(btn_Click);
}

void btn_Click(object sender, EventArgs e)
{
MessageBox.Show((Application.OpenForms[0].Controls["mytxtbox"] as TextBox).Text);
}


فکر کنم اینطوری فقط یه دکمه اضافه شد . کمکی به من نمیکنه درسته؟

nunegandom
شنبه 15 بهمن 1390, 21:49 عصر
یه دکمه و یه تکس باکس و یهه ایونت اضافه شد و از خاصیته تکسته txtbox هم استفاده شد!

cpuram
شنبه 15 بهمن 1390, 21:58 عصر
تشکر اگه امکان داره بیشتر راهنمایی کنید چون من وارد نیستم.
این قسمت کجاست؟
private void Form1_Load(object sender, EventArgs e)

nunegandom
شنبه 15 بهمن 1390, 21:59 عصر
اینم جمع اعداد:



private void Form1_Load(object sender, EventArgs e)
{
TextBox txt1 = new TextBox();
txt1.Name = "txt1";
txt1.Location = new Point(50, 30);
TextBox txt2 = new TextBox();
txt2.Name = "txt2";
txt2.Location = new Point(50, 50);

Button btn = new Button();
btn.Name = "mybtn";
btn.Visible = true;
btn.Enabled = true;
btn.Location = new Point(50, 80);
Controls.Add(txt1);
Controls.Add(txt2);
Controls.Add(btn);
btn.Click += new EventHandler(btn_Click);
}

void btn_Click(object sender, EventArgs e)
{
int txt1 = Convert.ToInt32((Application.OpenForms[0].Controls["txt1"] as TextBox).Text);
int txt2 = Convert.ToInt32((Application.OpenForms[0].Controls["txt2"] as TextBox).Text);

MessageBox.Show(txt1 + txt2 + "");
}

nunegandom
شنبه 15 بهمن 1390, 22:01 عصر
دو بار رویه فرم کلیک کن، میره قسمته Formload
یا اینکه از پنجره properties یه رعد و برق میبینی که اونجا میتونی تمام رویداد ها رو ببینی (با توضیحاتشون)

cpuram
شنبه 15 بهمن 1390, 22:02 عصر
ممنون واقعا شرمنده.

ali_habibi1384
شنبه 15 بهمن 1390, 22:06 عصر
اگر يك نام واسه myText بذاري مثلا "myText.Name="text2 كافي بود كد زير رو واسه جمع كردن بنويسي. اين همه دردسر هم نداره !!!


MessageBox.Show((Convert.ToInt16(Controls["text2"].Text) + Convert.ToInt16(textBox1.Text)).ToString());

nunegandom
شنبه 15 بهمن 1390, 22:07 عصر
منم همینجا یاد گرفتم داداش، ببین چقدر تشکر کردم :گیج: دشمنت شرمنده

ali_habibi1384
شنبه 15 بهمن 1390, 22:10 عصر
اینم جمع اعداد:



private void Form1_Load(object sender, EventArgs e)
{
TextBox txt1 = new TextBox();
txt1.Name = "txt1";
txt1.Location = new Point(50, 30);
TextBox txt2 = new TextBox();
txt2.Name = "txt2";
txt2.Location = new Point(50, 50);

Button btn = new Button();
btn.Name = "mybtn";
btn.Visible = true;
btn.Enabled = true;
btn.Location = new Point(50, 80);
Controls.Add(txt1);
Controls.Add(txt2);
Controls.Add(btn);
btn.Click += new EventHandler(btn_Click);
}

void btn_Click(object sender, EventArgs e)
{
int txt1 = Convert.ToInt32((Application.OpenForms[0].Controls["txt1"] as TextBox).Text);
int txt2 = Convert.ToInt32((Application.OpenForms[0].Controls["txt2"] as TextBox).Text);

MessageBox.Show(txt1 + txt2 + "");
}


صورت مساله رو عوض كردي! خودت تو رويداد لود ايونت ساختي كه يه جور كارو تموم كني. اينكه چطور ؟ واست مهم نبوده...