PDA

View Full Version : جمع چندین Lable در Lable مقصد بصورت اتوماتیک



barman.ar16
چهارشنبه 03 آذر 1395, 10:22 صبح
سلام به همه اساتید
بنده یک فرم داره که توی اون از tabcontrol استفاده کردم
در هر کدوم از این تب ها چند groupbox هست که توی هر کدومش یک لیبل هست به عنوان پارامتر و 5 radiobutton که مقدارهای خیلی خوب ، خوب ، متوسط ، ضعیف و عدم اجرا رو از کاربر میگیره سپس یک لیبل در انتهای همین گروپ گذاشتم که مقدار ارزشی radiobutton ها رو برمیگردونه با این کد :

label1.Text = ((RadioButton) sender).Tag.ToString();
البته قبلش مقدار تگ خیلی خوب رو 4 و خوب رو 3 و ... الی آخر انتخاب کردم
این یک عکس از محیط فرمم :

http://uupload.ir/files/tv73_capture.jpg

خب حالا میخوام توی تب آخر مقدار lable هایی که توی هر گروپ هست و تعدادشون 57 تاست رو باهم جمع کنم و بصورت آنی توی یک تکست باکس disable شده یا یک lable نشون بدم چون همین مقدار توی فرم چاپم میاد
ممنون میشم راهنمایی کنید ...

barman.ar16
چهارشنبه 03 آذر 1395, 22:07 عصر
تعجب می کنم از مدیر گرامی که پست من رو پاک می کنه اما دریغ از یک راهنمایی ...
ناسلامتی انجمن برنامه نویسی هست و کلی استاد عزیز جمع هستند اما دریغ از یک جواب ...!!!!
خب همه حرف ها در حد مزاح بود لطفا برندارید کاربریم رو بن کنید!!!!
خواهشا یک نفر راهنمایی کنه ... من پروژه کامله فقط گیر همین یک مشکل هستم اگر کسی میدونه لطفا راهنمایی کنه تا پروژه رو تکمیل کنم و تحویل بدمش
ممنون

Mahmoud.Afrad
چهارشنبه 03 آذر 1395, 22:25 عصر
دلیل پاک شدن پست شما به دلیل spam بودن پست بود.
به این دلیل کسی پاسخ نمیده چون این سوال بارها پرسیده شده، فقط کافیه جستجو کنید.
این هم چندتا نمونه
http://barnamenevis.org/showthread.php?513283-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D9%88-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87%D8%8C-50-%D8%AA%DA%A9%D8%B3%D8%AA-%D8%A8%D8%A7%DA%A9%D8%B3-%D8%AF%D8%B1-C-%D8%AA%D9%88%D8%B3%D8%B7-%D8%AA%D8%A7%D8%A8%D8%B9&p=2283417&viewfull=1#post2283417
http://barnamenevis.org/showthread.php?465281-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF-%D8%B2%DB%8C%D8%A7%D8%AF%DB%8C-CheckBox&p=2083961&viewfull=1#post2083961
http://barnamenevis.org/showthread.php?448327-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86-%DA%86%D9%86%D8%AF%D9%8A%D9%86-checkbox&p=2006052&viewfull=1#post2006052
http://barnamenevis.org/showthread.php?284700-%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%DA%AF%D8%B1%D9%88%D9%87%D9%8A-%D8%AE%D8%A7%D8%B5%D9%8A%D8%AA-%D9%83%D9%86%D8%AA%D8%B1%D9%84-%D8%A8%D8%A7-%D8%AD%D9%84%D9%82%D9%87&p=1255669&viewfull=1#post1255669
http://barnamenevis.org/showthread.php?173829-comboBox(i)l&p=781232&viewfull=1#post781232
http://barnamenevis.org/showthread.php?160511-%D8%B1%D9%8A%D8%B3%D8%AA-%DA%A9%D8%B1%D8%AF%D9%86-textbox%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AE%D9%84-%D9%8A%DA%A9-group&p=725762&viewfull=1#post725762
http://barnamenevis.org/showthread.php?163777-%D8%AD%D9%84%D9%82%D9%87-foreach&p=738317&viewfull=1#post738317
http://barnamenevis.org/showthread.php?152196-%D8%AE%D8%A7%D9%84%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-textbox-%D8%A8%D8%A7-%D9%88%D8%AC%D9%88%D8%AF-groupbox&p=695141&viewfull=1#post695141
http://barnamenevis.org/showthread.php?146932-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D8%A8%D9%87-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AE%D9%84-GroupBox
http://barnamenevis.org/showthread.php?117597-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%AE%D8%A7%D8%B5%DB%8C%D8%AA-%D8%AA%D9%85%D8%A7%D9%85-ComboBox%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D9%81%D8%B1%D9%85&p=572349&viewfull=1#post572349

barman.ar16
چهارشنبه 03 آذر 1395, 22:39 عصر
دلیل پاک شدن پست شما به دلیل spam بودن پست بود.
به این دلیل کسی پاسخ نمیده چون این سوال بارها پرسیده شده، فقط کافیه جستجو کنید.
این هم چندتا نمونه
http://barnamenevis.org/showthread.php?513283-%D8%AE%D9%88%D8%A7%D9%86%D8%AF%D9%86-%D9%88-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D8%AF%D8%A7%D8%AF%D9%87%D8%8C-50-%D8%AA%DA%A9%D8%B3%D8%AA-%D8%A8%D8%A7%DA%A9%D8%B3-%D8%AF%D8%B1-C-%D8%AA%D9%88%D8%B3%D8%B7-%D8%AA%D8%A7%D8%A8%D8%B9&p=2283417&viewfull=1#post2283417
http://barnamenevis.org/showthread.php?465281-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D9%85%D9%82%D8%AF%D8%A7%D8%B1-%D8%AA%D8%B9%D8%AF%D8%A7%D8%AF-%D8%B2%DB%8C%D8%A7%D8%AF%DB%8C-CheckBox&p=2083961&viewfull=1#post2083961
http://barnamenevis.org/showthread.php?448327-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D9%87%D9%85%D8%B2%D9%85%D8%A7%D9%86-%DA%86%D9%86%D8%AF%D9%8A%D9%86-checkbox&p=2006052&viewfull=1#post2006052
http://barnamenevis.org/showthread.php?284700-%D8%AA%D8%BA%D9%8A%D9%8A%D8%B1-%DA%AF%D8%B1%D9%88%D9%87%D9%8A-%D8%AE%D8%A7%D8%B5%D9%8A%D8%AA-%D9%83%D9%86%D8%AA%D8%B1%D9%84-%D8%A8%D8%A7-%D8%AD%D9%84%D9%82%D9%87&p=1255669&viewfull=1#post1255669
http://barnamenevis.org/showthread.php?173829-comboBox(i)l&p=781232&viewfull=1#post781232
http://barnamenevis.org/showthread.php?160511-%D8%B1%D9%8A%D8%B3%D8%AA-%DA%A9%D8%B1%D8%AF%D9%86-textbox%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AE%D9%84-%D9%8A%DA%A9-group&p=725762&viewfull=1#post725762
http://barnamenevis.org/showthread.php?163777-%D8%AD%D9%84%D9%82%D9%87-foreach&p=738317&viewfull=1#post738317
http://barnamenevis.org/showthread.php?152196-%D8%AE%D8%A7%D9%84%DB%8C-%DA%A9%D8%B1%D8%AF%D9%86-textbox-%D8%A8%D8%A7-%D9%88%D8%AC%D9%88%D8%AF-groupbox&p=695141&viewfull=1#post695141
http://barnamenevis.org/showthread.php?146932-%D8%AF%D8%B3%D8%AA%D8%B1%D8%B3%DB%8C-%D8%A8%D9%87-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%87%D8%A7%DB%8C-%D8%AF%D8%A7%D8%AE%D9%84-GroupBox
http://barnamenevis.org/showthread.php?117597-%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1-%D8%AE%D8%A7%D8%B5%DB%8C%D8%AA-%D8%AA%D9%85%D8%A7%D9%85-ComboBox%D9%87%D8%A7%DB%8C-%DB%8C%DA%A9-%D9%81%D8%B1%D9%85&p=572349&viewfull=1#post572349

مطالبی که گذاشتید رو نگاه کردم چیزی دستگیرم نشد ... بعضی ها هم که اصلا مربوط به سوال من نبود !!! ولی باز هم ممنون زحمت کشیدید

Mahmoud.Afrad
چهارشنبه 03 آذر 1395, 23:33 عصر
اون لینکها مثالهایی بودند که شما متوجه بشید چطور به کنترلهای داخل گروپ باکس دسترسی پیدا کنید.

طراحی که پیش گرفتید یک مقدار کار رو مشکل میکنه یعنی به کدنویسی زیادی نیاز هست. اگر میتونید، نحوه طراحیتون رو تغییر بدید و به جای گروپ باکس و کنترلهای داخلش ، از یوزرکنترل استفاده کنید. در اینصورت از طریق پراپرتی یا رویداد ، خیلی راحت تر میتونید به مقدار انتخابی دست پیدا کنید.
حالا سوال اینه که در پروژه میتونید تغییرات رو اعمال کنید یا نه؟
مقداری هم در مورد کاری که میخواهید انجام بشه توضیح بدید؛ پروژه در چه موردی هست؟

barman.ar16
چهارشنبه 03 آذر 1395, 23:49 عصر
اون لینکها مثالهایی بودند که شما متوجه بشید چطور به کنترلهای داخل گروپ باکس دسترسی پیدا کنید.

طراحی که پیش گرفتید یک مقدار کار رو مشکل میکنه یعنی به کدنویسی زیادی نیاز هست. اگر میتونید، نحوه طراحیتون رو تغییر بدید و به جای گروپ باکس و کنترلهای داخلش ، از یوزرکنترل استفاده کنید. در اینصورت از طریق پراپرتی یا رویداد ، خیلی راحت تر میتونید به مقدار انتخابی دست پیدا کنید.
حالا سوال اینه که در پروژه میتونید تغییرات رو اعمال کنید یا نه؟
مقداری هم در مورد کاری که میخواهید انجام بشه توضیح بدید؛ پروژه در چه موردی هست؟

ممنون از پاسخگویی و حوصله ای که به خرج میدید
متاسفانه همانطور که فرمودید طراحی خیلی سنگین و طولانی شده من توی این فرمم از 285 تا radiobutton استفاده کردم که اگر بخوام دوباره بهمش بزنم کار سخت میشه و مهمتر از اون اینکه زمان کافی ندارم و باید پروژه رو تحویل بدم

ببینید پروژه مربوط میشه به بازدید از مدارس
کارش اینه که یک سری پارامتر هست که مربوط میشه به بازرسی و با جواب های خیلی خوب ، خوب ، متوسط ، ضعیف و عدم اجرا مشخص میشن
حالا من اومدم هر یک از این پارامترها رو گذاشتم توی یک گروپ باکس که هم طراحی زیباتر بشه و هم منسجم تر بشه ته هر گروپ باکس هم یک لیبل گذاشتم که مقداری که توی تگ هر کدوم از جواب ها گذاشتم رو فراخونی میکنه
توی عکس واضحتر مشخصه
خب من یک کار دیگه میتونم بکنم بیام توی هر تب کنترل یک لیبل بگذارم و جمع همون لیبل هایی که توی گروپ باکس های همون تب کنترل هستند رو بزنه بعد توی صفحه آخر جمع همه جمع ها رو بزنم به نظرتون شدنیه؟؟؟
اگر آره لطفا توی کدنویسیش کمکم کنید باز هم ممنون
اگر باز هم منظورمو متوجه نشدید بگید چند تا عکس از کارم بگذارم برای روشنتر شدن موضوع

Mahmoud.Afrad
پنج شنبه 04 آذر 1395, 06:52 صبح
در اینصورت باید یک وجه تمایز بین لیبل های درون گروپ باکس وجود داشته باشه.
با فرض اینکه نام لیبل هایی که امتیاز هر گروپ باکس را نگهداری میکنند با عبارت lblScore شروع شود یک متد به صورت زیر در فرمتون ایجاد کنید
private void RadioButton_CheckedChanged(object sender, EventArgs e)
{
RadioButton radioButtonRef = sender as RadioButton;
GroupBox groupBoxRef = radioButtonRef.Parent as GroupBox;
Label gbScoreLabel = groupBoxRef.Controls.OfType<Label>().Single(i => i.Name.StartsWith("lblScore"));
gbScoreLabel.Text = radioButtonRef.Tag.ToString();
}
حالا کافیه این متد را به رویداد CheckedChanged همه رادیوباتن ها نسبت بدید. برای این کار رادیوباتن ها را انتخاب و از پنجره Events رویداد را تنظیم کنید.

برای جمع هر تب و جمع کل هم در همین متد و از طریق Parent گروپ باکس و ... میتونید عمل کنید.

barman.ar16
پنج شنبه 04 آذر 1395, 09:17 صبح
در اینصورت باید یک وجه تمایز بین لیبل های درون گروپ باکس وجود داشته باشه.
با فرض اینکه نام لیبل هایی که امتیاز هر گروپ باکس را نگهداری میکنند با عبارت lblScore شروع شود یک متد به صورت زیر در فرمتون ایجاد کنید
private void RadioButton_CheckedChanged(object sender, EventArgs e)
{
RadioButton radioButtonRef = sender as RadioButton;
GroupBox groupBoxRef = radioButtonRef.Parent as GroupBox;
Label gbScoreLabel = groupBoxRef.Controls.OfType<Label>().Single(i => i.Name.StartsWith("lblScore"));
gbScoreLabel.Text = radioButtonRef.Tag.ToString();
}
حالا کافیه این متد را به رویداد CheckedChanged همه رادیوباتن ها نسبت بدید. برای این کار رادیوباتن ها را انتخاب و از پنجره Events رویداد را تنظیم کنید.

برای جمع هر تب و جمع کل هم در همین متد و از طریق Parent گروپ باکس و ... میتونید عمل کنید.
سلام مجدد
ممنون که وقت میگذارید و راهنمایی می کنید
من کد رو بصورت آزمایشی درون رویداد checked چند تا radiobutton گذاشتم و یک لیبل درون همون تب کنترل ساختم و به جای اسم شروع شما مال خودم رو وارد کردم اما متاسفانه خطا میده و break میشه برنامه

حالا امروز صبح که داشتم ور میرفتم به یک نکته دیگه رسیدم من
خب همانطور که اشاره کردم من برای هر پارامتر یک لیبل تعریف کردم که خصوصیت تگ radiobutton ها بهش ارسال میشه و در نهایت همه اینها ارسال میشن به گزارشی که در استیمول سافت ساختم
تعداد این لیبل ها 57 تاست که همین تعداد رو در استیمول بصورت variable از نوع string ساخت و با دستور مقدارشون رو ارسال می کنم برای چاپ
یعنی من در استیمول 57 متغیر استرینگی دارم حالا نمیشه جمع اینها رو در همون استیمول انجام بدم یعنی از فانکشن های خود استیمول استفاده کنم برای جمع مقدار 57 تا متغیر استرینگیم
خودم صبح توی نت سرچ کردم نحوه استفاده از sum رو توی استیمول نفهمید باید چکار کنم به نظرتون میشه کاریش کرد
ممنون

barman.ar16
جمعه 05 آذر 1395, 14:03 عصر
خب بالاخره خودم اینقدر ور رفتم تا پیداش کردم
اینم برای کسایی که شاید نیازشون بشه
اگر تعداد زیادی متغیر دارید که توی یک ستون نیستند و هر جای گزارش ازشون استفاده کردید ابتدا حتما باید نوعشون رو بگذارید int یعنی عددی بعدش یه دونه متغیر int جدید درست می کنید حالا از قسمت int by گزینه expression رو انتخاب می کنید و در فیلد مربوطه اش هر چند تا متغیری int که دارید رو میتونید با علامت + با هم جمع می کنید
به همین راحتی ... سه روزه منتظر بودم از اساتید یک نفر راهنمایی کنه متاسفانه به جواب نرسیدم ولی این قضیه یک خوبی داشت اونم اینه که جوینده یابنده هست
یاحق