PDA

View Full Version : سوال: دینامیک فرم



shayan2020
یک شنبه 11 اسفند 1387, 18:58 عصر
سلام به همه
چطوری در رویداد یک کنترل دینامیک در فرم دینامیک به مثلا لیبل دینامیک می توان دسترسی داشت.

Editali
دوشنبه 12 اسفند 1387, 02:42 صبح
دوست عزیز میشه بیشتر توضیح بدی؟

دقیقا بگو میخوای چی کار کنی.

shayan2020
دوشنبه 12 اسفند 1387, 10:53 صبح
دوست گرامي سلام و تشكر از ملاحضه شما
در يك برنامه مجبور به ايجاد يك فرم جديد مي باشم . در اين فرم مي بايست بنا به شرايطي كنترل هاي جديدي ايجاد نمايم مثل Textboxو button و ... حالا در event click button مي بايست محتواي textboxرا به فرم قبلي منتقل كنم ولي نمي توانم در event button به textboxدسترسي داشته باشم اين كد را ملاحظه بفرماييد.

private void button2_Click(object sender, EventArgs e)
{
Form frmRichEdit = new Form();
Button mybutton = new Button();
TextBox mytextbox = new TextBox();
mybutton.Text = "Save";
frmRichEdit.Text = "RchTextEdit Form";
frmRichEdit.FormBorderStyle = FormBorderStyle.FixedDialog;
frmRichEdit.MaximizeBox = false;
frmRichEdit.MinimizeBox = false;
frmRichEdit.AcceptButton = mybutton;
frmRichEdit.StartPosition = FormStartPosition.CenterScreen;
mybutton.Click += new System.EventHandler(mybutton_Click);
frmRichEdit.Controls.Add(mytextbox);
frmRichEdit.Controls.Add(mybutton);
frmRichEdit.Controls.Add(MyRichedit);
frmRichEdit.Show();
}
private void mybutton_click(object sender, EventArgs e)
{
اينجا نمي توانم دستيابي به textbox داشته باشم

}

newgoldenman
دوشنبه 12 اسفند 1387, 14:52 عصر
دوست گرامي سلام و تشكر از ملاحضه شما
در يك برنامه مجبور به ايجاد يك فرم جديد مي باشم . در اين فرم مي بايست بنا به شرايطي كنترل هاي جديدي ايجاد نمايم مثل Textboxو button و ... حالا در event click button مي بايست محتواي textboxرا به فرم قبلي منتقل كنم ولي نمي توانم در event button به textboxدسترسي داشته باشم اين كد را ملاحظه بفرماييد.

private void button2_Click(object sender, EventArgs e)
{
Form frmRichEdit = new Form();
Button mybutton = new Button();
TextBox mytextbox = new TextBox();
mybutton.Text = "Save";
frmRichEdit.Text = "RchTextEdit Form";
frmRichEdit.FormBorderStyle = FormBorderStyle.FixedDialog;
frmRichEdit.MaximizeBox = false;
frmRichEdit.MinimizeBox = false;
frmRichEdit.AcceptButton = mybutton;
frmRichEdit.StartPosition = FormStartPosition.CenterScreen;
mybutton.Click += new System.EventHandler(mybutton_Click);
frmRichEdit.Controls.Add(mytextbox);
frmRichEdit.Controls.Add(mybutton);
frmRichEdit.Controls.Add(MyRichedit);
frmRichEdit.Show();
}
private void mybutton_click(object sender, EventArgs e)
{
اينجا نمي توانم دستيابي به textbox داشته باشم

}

سلام
طبق قوانین انجمن و نیز برای زیبا تر شدن تاپیک ها، کدهاتون رو داخل تگ CODE قرار بدین.

و اما این سوالی که شما پرسیدی، هیچ ربطی به دینامیک بودن فرم نداره. شما با استفاده از این کلید ها جستجو کنید داخل انجمن، به جوابتون میرسید:
کنترل یک فرم از فرم دیگر
کنترل فرم ها
مقدار فرم از داخل فرم دیگر
...
و چیزایی شبیه به اینها. مطالب زیادی هست.

موفق باشید

Editali
سه شنبه 13 اسفند 1387, 01:05 صبح
دوست عزیز، شما کمی بی دقتی کردی

اومدی توی یه متد یه فرم و یه دکمه و یه تکست باکس گذاشتی.
هر سه تای اینا متغیرهای محلی محسوب میشن و خارج از اون متد قابل دستیابی نیستن.

ولی یه راه داری:
ابتدا توی متد mybutton_Click شی sender رو به نوع Button تبدیل کن.
بعد با استفاده از این Button به فرم و از طریق فرم به Textbox دسترسی پیدا کنی.
من کد رو نوشتم و جوابم گرفتم. فقط دقت کن که موقعی که داری textbox رو به کنترلهای فرم اضافه میکنی چندمین کنترله. این میشه ایندکس textbox.
تو این قطعه کد اولین عنصرت textbox مورد نظر بود.

void mybutton_Click(object sender, EventArgs e)
{
Button mybutton = (Button)sender;
mybutton.Parent.Controls[0].Text = "My Text";
}

موفق باشی

shayan2020
سه شنبه 13 اسفند 1387, 13:37 عصر
بسيار متشكرم . كاملا جواب گرفتم .