PDA

View Full Version : سوال: نمایش روزهای هفته، همراه با حذف اعداد



batman1
سه شنبه 10 شهریور 1394, 18:54 عصر
سلام به همه.
دوستان،من برنامه ای دارم که یه دکمه و یک جعبه متن داره.
داخل این جعبه متن از عدد یک تا هفت نوشته شده که درقسمت فرم لود نوشتمش که وقتی برنامه اجرا میشه،اعداد یک تا هفت داخل جعبه متن هستند.
میخوام با زدن دکمه،بهم پیغام بده که"شنبه"و بعد از زدن اوکی،به علاوه اینکه عدد یک از داخل جعبه متن پاک بشه،بهم "دوشنبه"رو نشون بده و الی آخر تا جمعه...
134829
ممنون.

دلتنگ اسمان
سه شنبه 10 شهریور 1394, 19:07 عصر
با سلام
بیشتر توضیح بده و کد هم بذار.
یعنی با زدن دکمه فقط کلمه شنبه رو نشون بده. یا نام همون روز رو.
و بعد از OK کردن هم فقط دوشنبه رو نشون بده. این یعنی چی؟ من متوجه نمیشم.

rg_BlackRose
سه شنبه 10 شهریور 1394, 22:28 عصر
سلام

بهتر بود دلیل نیاز به این کارتون رو هم توضیح میدادین تا بیشتر و بهتر راهنمایی بگیرید.

ولی کدهای مورد نیاز شما:
1. آرایه زیر را درون کلاس فرم تعریف کنید.

public string[] Weekdaysname = new string[] {"شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه"};


2. TextBox مورد نظر رو با اعدادی که گفتین مقداردهی کنید.

textBox1.Text = @"1234567";


3. تابع زیر رو درون کلاس فرم تعریف کنید.

public void ShowDaysName()
{
while (textBox1.TextLength > 0)
{
var i = Convert.ToInt32(textBox1.Text.Substring(0, 1));
MessageBox.Show(Weekdaysname[i - 1]);
textBox1.Text = textBox1.Text.Remove(0, 1);
}
}

تابع بالا در صورتی درست کار میکنه که اعداد وارد شده در TextBox مورد نظر کمتر یا برابر هفت رقم و در محدوده اعداد 1 تا 7 باشد.
اگر اعداد توسط کاربر وارد میشن باید قبل از فراخوانی این تابع اعداد وارد شده رو کنترل کنید(در صورت نیاز بگین تا کاملتر کنم).

4. کدهای زیر رو در رویداد Click دکمه مورد نظر قرار بدید.

ShowDaysName();



موفق باشید.

batman1
پنج شنبه 12 شهریور 1394, 15:51 عصر
عزیز،کدت ارور میده!!
134896
134898
درست تعریفشون کردم؟!

ahmadreza.s
پنج شنبه 12 شهریور 1394, 16:09 عصر
سلام
کدت رو اینجوری بکن :

public class DaysOfWeek
{
public string[] WeekdaysName = { "شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنج شنبه", "جمعه" };
public void ShowDaysName()
{
while (textBox1.Text.Length > 0)
{
var i = Convert.ToInt32(textBox1.Text.Substring(0, 1));
MessageBox.Show(Weekdaysname[i - 1]);
textBox1.Text = textBox1.Text.Remove(0, 1);
}
}
}

batman1
پنج شنبه 12 شهریور 1394, 16:17 عصر
همچنان خطا داریم!!!:متفکر:
134899
مشکل از کجاست؟!

ahmadreza.s
پنج شنبه 12 شهریور 1394, 16:40 عصر
اون خطی که ارور میده رو اینجوری کنید :

while(TB1.Text.Length>0)

batman1
پنج شنبه 12 شهریور 1394, 17:03 عصر
متنو که اگه مثل شما بنویسم،text ش خطا میده.
اما من اینطوری نوشتم،messageboxش خطا میده به همین دلیل به MBS تبدیلش کردم،اما بازم ارور داد!!
134902
دیگه مشکل از کجاست؟!

batman1
پنج شنبه 12 شهریور 1394, 18:36 عصر
سلام به همه.
دوستان،این دستورات رو ببینید،جعبه پیامش به درستی اجرا میشه،اما قسمت removeش اصلا اجرا نمیشه.
یعنی میخوام با نمایش متن "شنبه"عدد 1 رو که در جعبه متنم هست رو پاک کنه و بعد از زدن دکمه ok متن "دوشنبه"رو نشون بده و عدد 2 جعبه متنم رو پاک کنه.............و همینطور ادامه بده تا همه ی اعداد پاک بشن.
134907
اینم اجراش:
134908
ممنون
البته اعدادش باید از 0 شروع شن...........مثلا(1,0)-(2,0).......

group45
پنج شنبه 12 شهریور 1394, 19:00 عصر
با سلام
اولا انتهای دستور وایلتون معلوم نیست
دوما بجای عکس گرفتن و ویرایش عکس و غیره و ذالک کدتون رو کپی کنید تا همه چیز مشخص باشه
کد رو کامل بزارید تا بشه بررسیش کرد

seyedVB
پنج شنبه 12 شهریور 1394, 22:38 عصر
باید بنوسید :

TextNumber.Text=TextNumber.Text.Remove(2,1)


www.cafebit.ir (http://www.cafebit.ir)

ahmadreza.s
پنج شنبه 12 شهریور 1394, 23:10 عصر
o_O

MBS که رشته س ! چرا اینجوری نوشتینش؟

قصدتون چیه تا بهتر بتونم درک کنم سوالتون رو؟

pbm_soy
جمعه 13 شهریور 1394, 00:21 صبح
متد remove زیر رشته را از خود رشته تکست باکس حذف نمیکند و تکست باکس را دست نخورده میگذارد
این متد از رشته تکست باکس کپی گرفته و بخشی از آنرا حذف میکند و یک رشته جدید تولید میکند و برمیگرداند باید آن رشته جدید را به متغییری چیزی بدهید مثلا به خود تکست باکش بدهید

rg_BlackRose
جمعه 13 شهریور 1394, 07:24 صبح
عزیز،کدت ارور میده!!
134896
134898
درست تعریفشون کردم؟!


سلام

دوست عزیز کدهایی که قرار میدم قبلا تست میشه.

این هم نمونه برنامه.
134948
نوشته شده با : VS 2015 و DotNet 3

موفق باشید.

batman1
جمعه 13 شهریور 1394, 12:24 عصر
دوستان،مشکل من حل شد.
از همتون و بیشتر از دوست عزیزمون seyedVB (http://barnamenevis.org/member.php?44603-seyedVB) تشکر میکنم که مطلب جالبی گفتن و تونست نیاز منو برطرف کنه.
حالا این دستورات رو بینید،میخوام بعد از اینکه سوییچ ها تمام شدن،برنامه بسته بشه.
هرکاری کردم نشد،ممنون میشم بازهم لطف کنید و راهنماییم کنید.
switch (i)
{
case 1:
MessageBox.Show("شنبه");
TxtNumber.Text = TxtNumber.Text.Remove(0, 1);
break;
case 2:
MessageBox.Show("یکشنبه");
TxtNumber.Text = TxtNumber.Text.Remove(0, 1);
break;
case 3:
MessageBox.Show("دوشنبه");
TxtNumber.Text = TxtNumber.Text.Remove(0, 1);
break;
case 4:
MessageBox.Show("سه شنبه");
TxtNumber.Text = TxtNumber.Text.Remove(0, 1);
break;
case 5:
MessageBox.Show("چهارشنبه");
TxtNumber.Text = TxtNumber.Text.Remove(0, 1);
break;
case 6:
MessageBox.Show("پنج شنبه");
TxtNumber.Text = TxtNumber.Text.Remove(0, 1);
break;
case 7:
MessageBox.Show("جمعه");
TxtNumber.Text = TxtNumber.Text.Remove(0, 1);
break;
}

ahmadreza.s
جمعه 13 شهریور 1394, 12:42 عصر
بعد از بلاک بسته ی سوئیچ بنویسید :
this.close();
یا
Application.Exit();


اما کاشکی قبل از سوال پرسیدن یه سرچی میکردید

batman1
جمعه 13 شهریور 1394, 16:52 عصر
ممنون از راهنماییتون.
دوستان،یه سوال دیگه:
همین دستورات رو به داخل کلاس ها میبرم،خطا میده.
با این دوتا ورودی از نوع string تعریف میکنم(که یکی به جای جعبه پیام و یکی به جای جعبه متن بیاد)اما خطا میده!!
ببینید:

public class DaysOfWeek
{
public string Switch(string MB,string TN)
{
int i = 0;
{
do
{
i++;
switch (i)
{
case 1:
MB("شنبه");
TN = TN.Remove(0, 1);
break;

این تصویر مربوط به خطاش:
134960




ممنون.

ahmadreza.s
جمعه 13 شهریور 1394, 19:49 عصر
سلام
ببخشید بخدا من در حدی نیستم که بهتون نصیحت کنم (چون خودم هم مثه شما مبتدی هستم) ، ولی به نظرم بهتره به جای اینکه اینقد پست و تاپیک بزارید و منتظر جواب از بقیه داشته باشید ، خودتون دست به کار شید و خودتون دنبال جواب سوالتون باشید ! (سوالی که خودتون واسه به جواب رسیدنش زحمت بکشید بیشتر تو ذهنتون میمونه تا اینکه کسی کد جواب رو بزاره جلوتون)

من کتاب جعفرنژاد قمی : آموزش سی شارپ و همچنین پی دی اف آموزش سی شارپ از آقای هاشمیان رو بهتون توصیه میکنم !

ببخشید امیدوارم بد برداشت نکرده باشید از حرفام !

--------------------------------------

این ارور هم اینجور که معلومه و من میبینم مال اینن که بلوک هارو نبستید ! کاشکی بقیه کد هارو میزاشتید که بتونم کامل اونو ببینیم و روی اون نظر بدیم !

batman1
جمعه 13 شهریور 1394, 22:58 عصر
ممنون دوست عزیز.این چه حرفیه..............
شما فقط بگو،اون MB چرا خطا میده............بقیه ی کدها هم که مهم نیست.
من هرچی رو اون کار کردم،نتونستم بفهمم چرا messagebox داخل کلاسا ارور میده.....با اینکه ورودی هم تعریف کردم.

محمد رضا فاتحی
شنبه 14 شهریور 1394, 09:51 صبح
شما اومدید توی تابع یه پارامتر استرینگ با نام MB تعریف کردید درسته؟؟
خوب معلومه MS("شنبه"); غلط میگیره؟؟الان این یعنی چی؟؟

ahmadreza.s
شنبه 14 شهریور 1394, 11:11 صبح
سلام !

MB یه رشته س ! چرا اینجوری نوشتینش : !
MB("شنبه");

نمیشه که مثه یه متد باهاش رفتار کرد ! میشه بگین دقیقن میخواین چیکار کنین با این رشته؟

batman1
یک شنبه 15 شهریور 1394, 09:43 صبح
ببین دوست من،من میخوام که این MS در کلاسی که تعریف کردم،مثل Messagebox.show کار کنه.
خود Messagebox.show رو که خطا میده،مجبورم یه ورودی تعریف کنم و بهش بدم و بعد وقتی میخوام صداش بزنم،مقدار Messagebox.show رو بهش بدم که زمانی که برنامه رو اجرا میکنم،یه جعبه پیام بازشه و شنبه رو نشون بده.
اما اینجا به MS که یک متغیر ورودی هست،خطا می گیره.
حالا،این خطا رو چه شکلی میتونم برطرف کنم؟
ممنون.

محمد آشتیانی
یک شنبه 15 شهریور 1394, 20:17 عصر
سلام
با اینکه متوجه منطق برنامت نیستم

این کلاس

using System;
using System.Collections.Generic;
using System.Windows.Forms;


namespace Sample
{
class TestClass
{
public string GetDayName(string input)
{
List<string> dayNames = new List<string>(new string[] { "شنبه", "یکشنبه", "دوشنبه", "سه شنبه", "چهارشنبه", "پنجشنبه", "جمعه" });
string output = string.Empty;


if (input.Length > 0)
{
int i = Convert.ToInt32(input.Substring(0, 1));
MessageBox.Show(dayNames[i-1]);
output = input.Remove(0, 1);
}
return output;
}
}
}


اینم نحوه فراخوانی متد مربوطه (میتونی تو رویداد کلیک Button بنویسی)

var tc = new TestClass();
textBox1.Text = tc.GetDayName(textBox1.Text);