تخفیف های داغ در جشنواره تابستانه توسینسو تخفیف های داغ در جشنواره تابستانه توسینسو
مانده تا پایان تخفیف
مشاهده دوره ها
0

تبدیل مقدار Radio Button به عدد

سلام و درود ، من توی یک فرم چندین group box دارم که توی هر کدوم از این ها 5 تا radio button هست و بصورت گروهی باهم کار می کنن و به این شکل نوشته شدن : عالی ، خوب ، متوسط ، ضعیف و عدم اجرا ، حالا میخوام برای هر کدوم از اینها یک مقدار تعیین کنم و توی یک لیبل که جلوش گذاشتم قرار بدم ....به طور واضحتر اگر کاربر گزینه عالی رو پر کرد عدد 4 توی لیبل جلوییش آنی درج بشه و خوب رو پر کرد 3 و الی آخر ، بعدا میخوام جمع کلی همه ی این لیبل ها رو هم داشته باشم ، ممنون میشم راهنمایی کنید

پرسیده شده در 1395/09/01 توسط

18 پاسخ

0

ممنون استاد

من الان سر کار هستم رفت منزل عکس میگذارم حتما

ولی بخوام توضیح بدم اینطوری هست که من توی فرمم 10 تا tabcontrol دارم توی هر کدوم از این ها چندین groupbox هست توی هر کدوم از این ها یک لیبل برای توضیحات هست و 5 تا radiobutton برای دریافت مقدار عالی ، خوب و ... از کاربر ،

در انتهای همین ها هم یک لیبل گذاشتم که مقدار تگ رو از radiobutton ها دریافت می کنه

حالا در تب آخر میخوام یک لیبل بگذارم که جمع همه لیبل ها رو یکجا و بصورت اتوماتیک نشون بده

متشکرم

پاسخ در 1395/09/02 توسط
1

ممنون از شما استاد عزیز که اینقدر براتون مهمه که کاربرای سایتتون استفاده ببرن از محیطی که براشون فراهم آوردید

به شخصا واقعا لذت میبرم که به سایتتون سر بزنم و از مطالب مفیدتون استفاده ببرم

ممنون و سپاسگذارم

پاسخ در 1395/09/05 توسط
0

ممنون استاد عزیز

ببخشید مجبور شدم پشت سر هم اسپم بدم

خواهش می کنم شما همیشه لطف دارید

استاد جسارتا این دو تا کد رو دقیقا کجا قرار بدم توی لود فرم یا توی لود تب کنترل ها یا ...

یه مورد دیگه هم که برام امروز پیش اومد و به ذهنم زد اینه :

این گزارش نهایی من هست بعد از گرفتن مقادیر از کاربر اگر دقت کنید یک سری variable از نوع استرینگ هستند که با حرف L انگلیسی شروع شدند در پایان ردیف هر جدول مثل l116 و l126 الی اخر

خب این ها همون لیبل هایی هستند که میخوایم جمع شون بزنیم و در اینجا هم برای چاپ اومدن که بوسیله یک کد اطلاعات را از لیبل ها درون فرمم براشون ارسال کردم

یه سوال به ذهنم زد نمیشه از قسمت function و از متد sum استفاده کرد و این متغیرهای استرینگی رو باهم جمع زد که کار رو راحتتر کنه من خودم توی نت سرچ کردم متاسفانه جوابی براش پیدا نکردم

در پایان عذر میخوام من جسارت کردم و همین موضوع رو بصورت جداگانه در این تاپیک هم پرسیدم

در نهایت ممنون از سخاوتمندی و حوصله شما در پاسخگویی به سوالات کاربران

پاسخ در 1395/09/04 توسط
1

میخوایید مقدارشون به هم وصل بشه یا با هم جمع بشه؟؟

پاسخ در 1395/09/01 توسط
0

سلام مجدد و با سپاس از پاسخ گویی

ببخشید من هنوز مبتدی هستم و کامل نگرفتم شما چی گفتید ...

در واقع قسمت تگ رو متوجه شدم ...

چند تا سوال :

1- اول radiobutton رو انتخاب کنم و توی قیمت tag بهش مقدار بدم یا بوسیله کدنویسی اینکار رو انجام بدم اگر کدنویسی هست دقیقا کجا این کدی رو که گذاشتید رو بنویسم

2- خب با چه کدی به لیبلی که میخواد مقدار tag رو نشون بده این کار رو انجام بدم

ببخشید سوالام مبتدیانه هست خب بالاخره اول راهم ممنون میشم راهنمایی کنید

متشکرم

پاسخ در 1395/09/01 توسط
0

ممنون از اهمیتی که میدید

ببینید من توی یک فرم 57 سری radiobutton دارم که هر سری از اینها 5 تا هست که شامل عالی ، خوب ، متوسط ، ضعیف و عدم اجرا میشه البته چون تعدادشون زیاد بود توی چندین tabcontrol پیاده سازیشون کردم

بعد با کمک شما اومدم به radiobutton عالی هر کدوم از سری ها 4 دادم خوب 3 و الی آخر

و پایان همون سری یک لیبل گذاشتم که در واقع نشون میده چه گزینه ای انتخاب شده

در پایان میخوام توی tabcontrol آخر یک تکست باکس یا لیبل قرار بدم که همه لیبل ها رو باهم جمع کنه مثلا 57 تا امتیاز 4 یا ....

باز هم ممنون که وقت میگذارید متشکرم

پاسخ در 1395/09/01 توسط
1

الان شما RadioButton ها به صورت مستقیم داخل Form هستن یا Tab Control یا Panel استفاده کردید؟ می تونید یه عکس از فرمتون بزارید؟

پاسخ در 1395/09/02 توسط
0

ممنون ولی خب یه خورده پیچیده شد

من radiobutton ها رو به این صورت نامگذاری کردم :

r111 , r112 , r113 , r114, r115 برای پارامتر اول که درواقع برای نشون دادن تگشون اون ها رو با کدی که خودتون زحمتش رو کشیدید برای l116 میفرستم و همچنین

r121 , r122 , r123 , r124 , r125 برای پارامتر دوم

الی آخر

حالا اومدم از کد شما استفاده کردم و به جای "Score" شما "r" قرار دادم بقیه رو تغییر ندادم و درون load فرمم قرار دادم اما کار نکرد

کار دیگه ای باید انجام بدم

البته در کل با خوندن کد آخری که زحمتش رو کشیدید متوجه شدم که داره چه اتفاقی میفته اما چون مبتدی هستم هنوز یه خورده برام مبهمه

به نظر کجای کار اشتباه هست؟؟؟

متشکرم از لطف و محبت شما و سعه صدرتون

پاسخ در 1395/09/02 توسط
1

سلام، خوشحالم که مشکلتون حل شد.

پاسخ در 1395/09/05 توسط
2

شما می تونید از پنجره Properties هم خصوصیت Tag رو مقدار دهی کنید. شما Tag هر RadioButton رو به مقداری که مد نظرتون ست کنید، بعد تو رویداد CheckedChanged هر کدوم از RadioButton ها کد زیر رو بنویسید:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
    label1.Text = ((RadioButton) sender).Tag.ToString();
}
پاسخ در 1395/09/01 توسط
0

خب بالاخره با کلی ور رفتن پیدا کردم راه حلش رو

توی گزارشم تمامی 57 تا متغیر رو از string تغییر دادم به int سپس یک متغیر int دیگه درست کردم از قسمت int by گذاشتمش روی expression و درون فیلد مربوطه اش تمامی 57 تا متغیر رو با + بینشون با هم جمع کردم به همین راحتی

باز هم ممنون از اساتید گرامی مخصوصا جناب احمدی عزیز که از کمک هاشون دریغ نکردند

یاحق

پاسخ در 1395/09/05 توسط
2

اول یک استاندارد برای نام گذاری RadioButton ها انتخاب کنید، مثلاً Score1RadioButton الی Score54RadioButton، یعنی RadioButton ها با کلمه Score شروع بشن، بعد بوسیله کد زیر می تونید لیست کل RadioButton هایی که با Score شروع شدن و انتخاب شدن رو انتخاب کنید و جمع Tag شون رو بدست بیارید، البته این و بگم که مکانیزم بدست آوردن لیست RadioButton ها دست خودتون هست و با هر روشی می تونید از لیست RadioButton ها استفاده کنید، برای مثال اگر تو TabControl هستن RadioButton ها می تونید داخل هر Tab رو با شیوه مشابهی بدست بیارید، کد زیر دید اولیه رو بهتون میده:

var scoreRadioButtons = this.Controls.OfType<RadioButton>().Where(r => r.Name.StartsWith("Score") && r.Checked);

int total = 0;

foreach (var scoreRadioButton in scoreRadioButtons)
{
    total += int.Parse(scoreRadioButton.Tag.ToString());
}

TotalTextBox.Text = total.ToString();
پاسخ در 1395/09/01 توسط
2

سلام و عرض ادب، هر کنترلی که شما استفاده می کنید یک خصوصیت داره به نام Tag که می تونید هر مقداری رو بهش بدید، برای مثال عدد، رشته و ...، حالا شما موقعی که می خوایید استفاده کنید کافیه Tag رو تبدیل به نوعی کنید که زمان طراحی مقدار دهیش کردید:

radioButton1.Tag = 1;
var radio1Value = (int)radioButton1.Tag;
پاسخ در 1395/09/01 توسط
0

سلام مجدد

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

ممنون

پاسخ در 1395/09/02 توسط
0

سلام به استاد احمدی عزیزی

من این کد رو گذاشتم توی فرمم بعد از using ها


private int CalculateSum(TabControl.TabPageCollection tabeCollection)
{
    var sum = 0;

    foreach (TabPage tabPage in tabeCollection)
    {
        foreach (var radioButton in tabPage.Controls.OfType<RadioButton>().Where(r=>r.Name.StartsWith("Score")))
        {
            sum += (int)radioButton.Tag;
        }
    }

    return sum;
}

بعد مقدار startwith مساوی با مقدار خودم قرار دادم

و بعد این کد رو گذاشتم توی لود فرمم

TotalTextBox.Text = CalculateSum(tabControl1.TabPages).ToString();

البته ایراد گرفت مجبور شدم tostring رو اضافه کنم به انتهاش و همچنین برابر قرارش دادم با تکست باکس خودم اما مقدار رو 0 نشون میده

به نظرتون کجای کار اشکال داره

جسارتا اون موردی که خدمتتون عرض کردم هم راه حلی نداره ( جمع چند متغیر استرینگی توی گزارش استیمول سافت )

ممنون و متشکرم از شما ...

پاسخ در 1395/09/05 توسط
0

بسیار عالی ...

بله چک کردم به خوبی انجام شد ممنون و سپاسگذارم

فقط در نهایت برای جمع زدن مقدار همه لیبل ها رو هم راهنمایی کنید ممنون میشم

چون 57 تا لیبل دارم که باید همه رو جمع بزنم یعنی در واقع میخوام یک تکست باکس بصورت disable یا یک لیبل بگذارم که بعد از اینکه لیبل ها تک به تک اطلاعات را از radiobutton ها گرفتند بعد با هم جمع بشن و بلافاصله درون اون نوشته بشن

قبلا چند تا تکست باکس رو اینطوری با هم جمع زدم البته بصورت اتوماتیک :

ابتدا در رویداد کی پرس هر سه تکست باکس نوشتم
if (!(char.IsDigit(e.KeyChar) || char.IsControl(e.KeyChar) || ((int)e.KeyChar) == 32))
           {
               e.Handled = true;
           }
بعد در رویداد هر تکست باکس نوشتم
int txt1 = 0, txt2 = 0, txt3 = 0;
textBox4.Text = "";
           if (textBox1.Text != "") txt1 = int.Parse(textBox1.Text);
           if (textBox2.Text != "") txt2 = int.Parse(textBox2.Text);
           if (textBox3.Text != "") txt3 = int.Parse(textBox3.Text);
           textBox4.Text = (txt1 + txt2 + txt3).ToString();

به نظرتون برای همین ها هم باید اینطوری بنویسم البته اون ها تکست باکس بودن اینها لیبل ...

به نظرتون برای اینها هم همین کار رو بکنم

متشکرم

پاسخ در 1395/09/01 توسط
0

از اساتید بزرگوار کسی راهنمایی نمی کنه من دقیقا گیر همین مورد هستم پروژه ام کامله ... حتی تحویل هم دادم ولی خب این مورد توش مشکل داشت باید دوباره ازش بگیرم و اصلاح کنم

متشکرم

پاسخ در 1395/09/03 توسط
2

سلام مجدد و عذرخواهی بابت اینکه دیر جواب دادم، با توجه به مواردی که فرمودید بنده این راه کار رو پیشنهاد می کنم، اول یک متدی به صورت زیر بنویسید که کل TabPage ها رو برای کنترل های RadioButton پیمایش کنه:

private int CalculateSum(TabControl.TabPageCollection tabeCollection)
{
    var sum = 0;

    foreach (TabPage tabPage in tabeCollection)
    {
        foreach (var radioButton in tabPage.Controls.OfType<RadioButton>().Where(r=>r.Name.StartsWith("Score")))
        {
            sum += (int)radioButton.Tag;
        }
    }

    return sum;
}

حالا به صورت زیر از این کد استفاده کنید:

TotalTextBox.Text = CalculateSum(tabControl1.TabPages);
پاسخ در 1395/09/04 توسط

پاسخ شما