PDA

View Full Version : سوال: لطفاً با کد توضیح دهید که چگونه میتوان متن user control را در richbox تایپ کرد .



harani
یک شنبه 21 خرداد 1391, 23:25 عصر
سلام من یک user control به شکل ساختم :


88107

سه تا فرم با نامهای main و info و Report هم دارم که به شکلهای زیرند .



88109

88108

88110

با اجرای برنامه فرم main بالا می آید سپس کاربر با فشردن کلید info وارد فرم info میشود و با فشردن دکمه Add چندین user control داخل کنترل پانل روی فرم اضافه میشود . حال من میخواهم کاربر زمانی که دکمه Save را میزند . رشته ای را که شامل دکمه رادییویی انتخاب شده در هر usercontrol بهراه متن داخل combobox و بهمراه متن داخل textBox در یک متغیر از نوع رشته بصورت public ذخیره کند سپس زمانی که کاربر دکمه go to main را می فشارد دوباره به فرم اصلی بر میگردد در اینجا نیز میخوام
کاربر با فشردن دکمه ی final Save متن داخل txtName و txtCo را در یک متغیر رشته ای بهمراه رشته ای که در فرم info بصورت public تعریف کردیم را در یک متغیر رشته ای ذخیره کنیم و در نهایت زمانی که کاربر دکمه preview را میزند وارد فرم report می شود . میخواهم در rich box فرم report متن هر user control در یک سطر از richbox قرار بگیرد چگونه این کار ممکن است .
امیدوارم متوجه مطلب شده باشید

با سپاس فراوان از شما

harani
دوشنبه 22 خرداد 1391, 01:16 صبح
مثال http://www.up98.org/upload/server1/02/j/sg1fszstd5g8my61v5he.rar

نه درست نیست من با فشردن دکمه Add چندین usercontrol به فرم اضافه میکنم یکی که نیست میخوام متن هر کدام را در یک سطر rich bix ثبت کند .

لطفاً اگر فهمیدید جواب را با کد بنویسید . ممنون

harani
دوشنبه 22 خرداد 1391, 19:34 عصر
خوب در یک حلقه این کار رو انجام بدید. در مثال پست2 چندتا یوزرکنترل به فرم2 اضافه کنید و کد دکمه go back فرم2 رو به این صورت اصلاح کنیدو نتیجه رو ببینید
st = null;
foreach (Control c in this.Controls)
if (c is UserControl1 && ((UserControl1)c).radioButton1.Checked)
st += ((UserControl1)c).radioButton1.Text + '\t' + ((UserControl1)c).textBox1.Text + '\n';
this.Close();

مننون من این را امتحان کردم ولی برابر با richbox.Text قرار دادم متنی چاپ نشد . لطفاً بازم جواب دهید

harani
چهارشنبه 24 خرداد 1391, 03:29 صبح
بفرما http://up98.org/upload/server1/02/j/kui8etlawjyl26unbiu.rar

جوابتون کاملاً درسته خودم همچین چیزی نوشته بودم ولی بازم کار نکرد من مثلاً یک pubilc string final در فرم اصلی دارم بعد یک متد بصورت زیر تعریف کردم :

void fina_save (Control ctrl){
final = txtname.Text + txtCo.Text + stringinfo;//(stringinfo)(1) در فرم info تعریف شده و برابر متن user controlها در فرم info است
ctrl.Text = final
{


بعد در رویداد مثلاً دکمه preview آمدم کد زیر را گفتم :

Report r = new Report();
final_Save(r.richbox1);
r.ShowDialog();



در user control (با نام UserControl1) هم که مطابق شکل باشه اول یک pulic string A_B تعریف کردم بعد گفتم که :



private void rbA_CheckedChanged(object sender, EventArgs e)
{
A_B = rbAshna.Text;
}

private void rbB_CheckedChanged(object sender, EventArgs e)
{
A_B = rbMosalat.Text;
}


بعد برگشتم به فرم info ابتدا یک public string stringinfo (ارجاع به (1)) تعریف کردم سپس در رویداد دکمه ی go to main کد زیر را نوشتم :


private void btnGotoMain_Click(object sender, EventArgs e)
{

foreach (UserControl1 c in panel1.Controls<UserControl1>)
stringinfo = c.A_B + "\t" + c.comboboxUserctrl + "\t" + c.textBoxUserctrl.Text + "\n";
this.Close();
}


مطمئناً پس از اجرای برنامه می بایست کاربر زمانی که فرم info را فراخوانی میکند و تعداد زیادی usercontrol با استفاده از دکمه Add به قسمت کنترل پانل فرم info اضافه میکنید (که با scroll میتواند آن Usercontrol هایی که خارج دید و ارتفاع کنترل پانل هست را ببیند) سپس کاربر متن مربوط را در هر usercontrol ثبت میکند و با فشردن دکمه go to main به فرم اصلی باز میگردد حال کاربر با فشردن دکمه Preview موجود در به فرم اصلی به فرم Report دسترسی پیدا میکند که متن داخل هر سطر از کنترل richbox برابر متون مربوط به هر Usercontrol ای است که کاربر در فرم info اضافه کرده . ولی چرا برای من این متون در کنترل richbox نمایش داده نمیشود ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

harani
چهارشنبه 24 خرداد 1391, 03:32 صبح
اشتباهی در stringinfo = c.A_B + "\t" + c.comboboxUserctrl + "\t" + c.textBoxUserctrl.Text + "\n"; به جای Text.c.comboboxUserctrl تایپ شده c.comboboxUserctrl

harani
چهارشنبه 24 خرداد 1391, 03:37 صبح
rbAshna = rbA , rbMosalat = rbB اشتباهی تایپ کردم .

harani
چهارشنبه 24 خرداد 1391, 03:46 صبح
در حلقه foreach مربوط به رویداد کلیک دکمه gotomain دو پرانتز بعد از <UserControl1> که نماد متد بودن است از جا افتاده :
درستش :

foreach (UserControl1 c in panel1.Controls<UserControl1>())