[IMG] [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] [/IMG]
این ارور چیه
Printable View
[IMG] [ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ] [/IMG]
این ارور چیه
خب مشخصه!نقل قول:
ميگه اون تكستي كه شما ميخواهيد به عدد تبديلش كنيد در فرمتي كه قابل تبديل به عدد باشه نيست
شما يك كاراكتر غير عددي تو تكست باكستون وارد كرديد و برنامه اين ارور را بهتون داده
من اول یه متغیرر تعریف کردم به اسم aاز نوع اینتجر
بعد تو قسمت تکست باکس این کدو نوشتم
a=convert.toint32(textbox1.tex)
حالا خواستم مثلا بگم هر چیزی که توو تکست باکس وارد میشه بریز توa
:41:
چاره کار چیه:41:
من الان براتون کدش را مینویسم و با توضیحات میذارم اینجاکمی صبر کنید....نقل قول:
ممنون
لطف میکنید
:11:
خب من کد را براتون میذارم
لطفا به نام گذاری کنترل ها و همچنین event دکمه ها دقت کنید
کد:
private void btnJam_Click(object sender, EventArgs e)
{
try
{
int Adade1 = Convert.ToInt32(txtAdade1.Text);
int Adade2 = Convert.ToInt32(txtAdade2.Text);
lblResult.Text = (Adade1 + Adade2).ToString();
}
catch
{
MessageBox.Show("انجام عملیات محاسباتی بر روی کاراکترهای غیر عددی ممکن نیست",
"خطای ورود داده");
}
}
private void btnTafrigh_Click(object sender, EventArgs e)
{
try
{
int Adade1 = Convert.ToInt32(txtAdade1.Text);
int Adade2 = Convert.ToInt32(txtAdade2.Text);
lblResult.Text = (Adade1 - Adade2).ToString();
}
catch
{
MessageBox.Show("انجام عملیات محاسباتی بر روی کاراکترهای غیر عددی ممکن نیست",
"خطای ورود داده");
}
}
private void btnZarb_Click(object sender, EventArgs e)
{
try
{
int Adade1 = Convert.ToInt32(txtAdade1.Text);
int Adade2 = Convert.ToInt32(txtAdade2.Text);
lblResult.Text = (Adade1 * Adade2).ToString();
}
catch
{
MessageBox.Show("انجام عملیات محاسباتی بر روی کاراکترهای غیر عددی ممکن نیست",
"خطای ورود داده");
}
}
private void btnTaghsim_Click(object sender, EventArgs e)
{
try
{
double Adade1 = Convert.ToDouble(txtAdade1.Text);
double Adade2 = Convert.ToDouble(txtAdade2.Text);
if (Adade2 != 0)
{
lblResult.Text = (Adade1 / Adade2).ToString();
}
else
{
MessageBox.Show("انجام عملیات محاسباتی تقسیم بر صفر ممکن نیست",
"خطای ورود داده");
}
}
catch
{
MessageBox.Show("انجام عملیات محاسباتی بر روی کاراکترهای غیر عددی ممکن نیست",
"خطای ورود داده");
}
}
}
همونطور که میبینید کد ها اینجا بهم ریخته میشه اما شما اگر کپیشون کنید و در ویژوال استدیو پیست کنید درست نمایش داده میشننکات :1. قبل از اسم دکمه ها پیشوند btn ، قبل از تکست باکس ها txt و قبل از لیبل lbl میذاریم2. این کد ها را در event کلیک هر دکمه قرار میدیم. بدین صورت هربار که دکمه عملیات مربوطه زده شد بصورت اتوماتیک برنامه محاسبه مورد نظر را روی دو عدد وارد شده در تکست باکس ها انجام میده و نیازی به دکمه مساوی نیستش3. از اونجا که ممکنه در تکست باکس ها کاراکتر های غیر عددی هم وارد بشه ( یا اصولا هیچ چیزی وارد نشه ) برای جلوگیری از غاطی کردن مخ برنامممون بهش میگیم که سعی کنه این عملیات محاسباتی رو انجام بده ( try ) و اگر نتونست فدای سرش و بجاش بیاد قسمت catch رو انجام بده. اگر تونست که هیچی و بیخیال قسمت catch میشه4. در حالت تقسیم دو نکته جدید وجود داره. یکی اینکه نباید بذاریم تقسیم بر صفر انجام بشه. دوم هم اینکه چون ممکنه جواب اعشاری باشه باید دو عدد رو بحالت اعشاری کانورت کنیم و بعد تقسیم کنیم تا جواب اعشاری باشه ( تقسیم دو تا عدد صحیح تو سی شارپ همیشه صحیحه )دیگه نکته ای نداره. سوالی بود من در خدمتم
واقعا ازتون ممنونم
من این اولین برنامست که خواستم بنویسم خیلی هم سعی کردم بتونم بنویسم ولی نتونستم
واقعا ممنون
انشالا با ابن راهنماییها و کمک های شما بتونم دیگه برنامه بنویسم والبته باز مزاحمتون شم
خیلی ممنونم
واقعا لطف کردید:11:
خواهش میکنمنقل قول:
وظیفه بود
من خودم مدتی قبل وضع شما رو داشتم ولی متاسفانه کسی کمکی بهم نکرد. هنوز هم ÷ست ها و تاپیک های بدون پاسخ من تو تاپیک های مختلف موجوده
من واقعا تلاش میکنم تا سوالات اولیه کسائیکه میخوان شروع کنن را جواب بدم. البته این فقط برای شروعه. کسی که علاقه و استعدادش رو داشته باشه خودش راه میفته و دیگه سوالاتش خیلی کم و البته پخته میشه.
موفق باشید
فک کنم واقعا من دیگه مغزم صفره چون هرکار میکنم حالیم نمیشه:41:کجا بنویسم چه جوری بعضی چیزا برا چی نوشتین اصلا حالیم نیست:41:
نقل قول:
دوست عزیز شما سوالت را بپرس تا دوستان جواب بدن. نیازی نیست که ناراحتی کنی. منتمام نکات اون کد را توضیح دادم ولی بازم سوالی هست بفرمائید در خدمتم
private void btnJam_Click(object sender, EventArgs e)این کلیک چه کنترلیه
int Adade1 = Convert.ToInt32(txtAdade1.Text); int Adade2 = Convert.ToInt32(txtAdade2.Text)
این حالت هم که وارد میکنم باز همون اروری میده که عکسشو گذاشتم
من پیشوند کنترل ها را خدمتتون عرض کردم. btn پیشوند کنترل دکمه است. مخفف button . هر کنترلی یه مخففی داره که قبلش نوشته میشه تا قابل تشخیص باشه. ضمنا این کد باید در رویداد کلیک این کنترل نوشته بشه. شما کد را نباید در رویدادهای مرتبط با تکست باکس قرار بدید.نقل قول:
دوست عزیز ناراحت نشی ها ولی اگر هنوز قدرت آنالیز این حرفها رو نداری بهتره کمی منبع آموزشیت رو بخونی و بعد دوباره کد بزنی. چون ظاهرا کمی در مباحث نئوری اولیه ضعیفی. البته یادگیری همه این چیزها یک ساعت هم زمان نمیبره.
پاورقی : رویداد پیش فرض یک دکمه کلیک هست و برای تکست باکس تکس چنج ( تغیییر متن )
بازم ممنون
چشم
شما یه پروژه جدید ویندوزی ایجاد کن
روی فرمت دو تا تکست باکس بذار و اسم یکی را بذار txtAdade1 و دومی را بذار txtAdade2
بعد یه 4 تا دکمه بذار به ایم اسامی : btnJam - btnZarb - btnTaghsim - btnTafrigh
یه دونه لیبل هم بذار با نام lblResult
بعد روی تک تک دکمه هات دبل کلیک کن ( بعد از هر دبل کلیک به قسمت کد ها میری ولی کد ها رو کاری نداشته باش و دوباره به قسمت فرم برو و روی دکمه بعدی دبل کلیک کن )
بعد از اینکار رویداد کلیک هر 4 تا دکمه خود به خود ایجاد شده. حالا به قسمت خود برو و کد ها رو با کدی که من دادم مقایسه کن. کدهایی که میبینی من اضافه تر دارم را تو قسمت خودش ( یعنی قسمت رویداد کلیک ) پیست کن. بعد که هر 4 تا را پیست کردی برنامه را اجرا کن.
اگر درست اینکارو انجام بدی نتیجه رو میبینی
مرسی مرسی مرسی شد
ولی شرمنده باز سوال دارم
int Adade1 = Convert.ToInt32(txtAdade1.Text);
مثلا این خط رو کپی نکنم
خودم بنویسم میگه عدد یک نیست توو فرم به بزرگی و کوچیکی هم دقت میکنم مشکل چیه
بازم سلام و ببخشید باز سوال دارم
من حالا کد رو خودم به این صورت نوشتم
ولی جواب هر ضرب و تفریقی رو صفر میده
ببخشید چرا؟؟
نقل قول:
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace asli1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int a;
public int b;
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
//int a = Convert.ToInt32(textBox1.Text);
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
// int b = Convert.ToInt32(textBox2.Text);
}
private void button1_Click(object sender, EventArgs e)
{
label4.Text = (a - b).ToString();
}
private void button2_Click(object sender, EventArgs e)
{
label4.Text = (a * b).ToString();
}
}
}
سلام دوست عزیز
نمیدونم چرا وقتی من نحوه نامگذاری درست و محل کد ها رو بهتون گفتم بازم رعایت نکردید. اگر بناست من بگم و شما هرکاری خودتون دوست دارید بکنید که نمیشه. شما تعریف متغیر را در محل محاسبات اناجم بده. اونجا که متغیر را تعریف کردید اشتباهه. من کد درست را بهتون دادم . اگر در مورد اون مشکل با سوالی داشتید در خدمتم
پاورقی 1 : سی شارپ به بزرگی و کوچکی حروف حساس نیست
پاورقی 2 : سی شارپ بطور پیش فرض به مقادیر عددی ایکه مقدار دهی نشده اند مقدار صفر را میده. یعنی مثلا a*b را اگر مقدار دهی نشن صفر میدونه و نتیجه ضربشون را هم صفر میدونه دیگه
ممنون فهمیدم
خب عصبانی نشید اولمه فقط دوس داشتم چیزیم که فکر کردم خودم بلدم بنویسم
اشتباهمو فهمیدم.بازم ممنون دوستم:11:
دوست عزیز من عصبانی نشدمنقل قول:
اینم مثه دعواهاییه که معلم ها بچه بودیم میکردنمون. گاهی ادم باید دعوا بشه تا حرف گوش بده. میبینید که من خیلی سری جواب هاتون را میدم. چون واقعا کسی کمکم نکرد دوست دارم شما و سایرین را کمک کنم. بهر حال همونطور که میبینی کسی دیگه ای برای کمک به شما چست نداده. پس از این فرصت استفاده کن و سعی کن زودتر یاد بگیری
چشم و باز ممنون
حالا معلم جون شروع کردم یه ماشین حساب جدی تر مینویسم اگه انشالا بتونم میام بهت میگم تا بفهمی کمکاتونو سرسری نمیگیرم و واقعا از کمکاتون استفاده میکنم
در ضمن اره ممنونم که شما جوابگویید من که چیز خاصی بلد نیستم بگم جبران میکنم ولی انشالا تو کلا موفق باشی
خواهش میکنم. اگر میخوای یادبگیری پشتکارت را باید افزاش بدی. من زود به زود اینجا سر میزنم. میتونی هر لحظه سوالت رو بذاری و من در اسرع وقت جواب میدم.نقل قول:
سلام و ببخشید باز اودمنقل قول:
ببینید مثلا این دکمه cهست توو ماشین حسابا صفحه پاک میکنه من اینجور ذکمه ای گذاشتم چطور بهش فرمان بدم اینو که زد تکست باکس خالی شه
منظورم اینه فرمان خالی شدن توو شارپ چیه
ببخشید:11:
خیلی سادست دوست عزیزنقل قول:
خالی بودن یعنی چی؟ خودت فکر کن. یعنی هیچ کاراکتری توش نباشه. خب پس تو هم اونو برابر هیچ کاراکتر قرار بده. اینطوری :
البته این راهیه که شما میتونستید خودتون حدس بزنید. ولی راه حرفه ای ترش اینهنقل قول:
textbox1.text=""
البته گفته باشم از نظر نتیجه هر دو تاشون عین هم هستننقل قول:
textbox1.text=String.Empty
ضمنا اینجا من تکست باکس رو پاک کردم ولی شما با این روش تکتست هر کنترلی را میتونید پاک کنید
ببین دوست عزیز بهتره خلاقیتت رو بیشتر بکار بگیری. فکر نکن مسائل راه حل های ویژه ای داره که تو هیچیش رو بلد نیستی. سعی کن با همین اطلاعاتت راه حل رو پیدا کنی. بله ممکنه راه حل بهتری هم از راه حل شما باشه ولی مهم اینه که شما تونستی حل کنی. ببینید کدی که ما مینویسیم ظاهرش اصلا در اصل برنامه تاثیری نداره. اینقدری که بحث ظاهر کد مطرحه بخاطر مسائل دیگس که برای شروع کار نیازی نیست رعایت کنید.
مثلا این دو روشی که در بالا گفته شد هر دو یکیند و اینطوری نیست که راه دوم باعث بشه برنامه بهتر کار کنه. ولی خب راه دوم حرفه ای تر حساب میشه و راه اول مبتدیانه است. علتشم اینه که راه اول هم شکل قشنگی نداره هم ممکنه بعدا آدم رو به اشتباه بندازه یا مسائل دیگه.
شما الان تمام اطلاعات لازم برای نوشتن یه ماشین حساب ساده رو داری. فقط چیزیکه باید داشته باشی خلاقیت و تلاشه. حتی الان شما دکمه حافظه رو هم بلدی بسازی. البته الان شاید فکر کنی نمیتونی ولی اگر یه ذره فکر کنی راهش رو پیدا میکنی.
منتظر حلت هستم....
باشه به کله پوکم فشار میارم:31:باز ممنونم.امیدوارم بتونم با سوال کمتر این یکی ماشین حسابه رو بنویسم:11:
هزار تا سوالم داری بپرس ولی سوالی که معلوم باشه کار کردی نه از تنبلی سوال کردینقل قول:
ببخشید فکر کنم شما درست متوجه نشدید، من درست توضیح ندادمنقل قول:
مشکل من دقیقا اینه که یه کلاس دارم که یه سری ورودی میگیره و میخوام این ورودی هارو محدود کنم مثلا خطایی چیزی بده برای مثال ورودی آ و ورودی ب باید مساوی یکدیگر باشند و اگر نباشند به مشکل بر میخوره و اگر کاربر اون کلیاس ندونه که باید مساوی باشند که چه بدتر :دی حالا من میخوام اگه مساوی نبودند یه جوری حالی کنه اونو مثلا اررو ر یا پیغام بده. دقت کنید هدف من برنامه نیست و درباره کلاس توضیح میدم
پ.ن. فعلا یه متود نوشتم که اگه اشتباه بود فالس برمیگردونه ولی اگه کمک کنید بهتره
مرسی
نقل قول:
سلام.
من اصلا نمیتونم بفهمم دنبال چی هستید. نمیدونم اصلا معنای درست یک کلاس را متوجه شدید یا که خیر. من معنای ساده ای که برای کلاس برای خودم ساختم اینه که کلاس یه نوع دیتا تایپه که جزء دیتا تایپ های متعارف نیست. مثلا فرم خودش یه کلاسه که از کلاس اصلی فرم ارث بری میکنه و مثلا ما میائیم form1 را از دیتا تایپ FORM تعریف و نمونه سازی میکنیم. با این تفاسیر من نمیتونم معنای حرف شما رو متوجه شم. شاید دوستان با سوادتر اگر حاضر به کمک دیگران بودن میتونستن جواب شما را بدن. اونچه من در مورد کلاس میدونم ربطی به اونچه شما میگید نداره و اصلا من نمیدونم این کلاس شما چی هستش. اصولا کاربرها کاری به کلاس ها ندارند و این شما هستید که از کلاس ها استفاده میکنید. هیچ کاربری هیچ مقداری را به کلاس نمیده و این شما هستید که داده ها رو از کاربر میگیرید و بعدا به هر جایی میخواهید میفرستید. همونطورم که در جواب اولم هم عرض کردم شما باید فیلتر را در دریافت اطلاعات قرار بدید نه در ورود به کلاس
سلام
باز اومدم با سوال
شرمنده معلم خواستم روو پا خودم واسم باور کن زیادم روش امتحان نمودم نشد:41:ببینید من یه تکست باکس پذاشتم برا ماشین حساب حالا میخوام بهش حالی کنم وقتی عدد اول زدم بعد هر عملگری که وارد میشه خودبه خو عدد اول ریخته شه به متغیر مثلا aو تکست باکس خالی شه برا عدد دوم
به خدا خودمم نمیفهمم چی میگم:41:
ببین این ماشین حساب من یه تکست باکس با یه دکمه ثبت عدد اول(عدد بریزه متغیرر a)یه دکمه ثبت عدد 2(عدد بریزه متغیر b)
بعد روو هر دکمه عملگر نوشتمy=(a*b)مثلا برا دکمه ضرب بعد برا دکمه مساوی نوشتمy رو مثلا بریز توو تکست باکس
ببینید روش و دستورش رو بهم نگید
فقط توو درک مسئله کمکم کنید
البته هرجور شما صلاح میدونید بگید
باور کنید هنگ کردم:41::11:
خب من هم منظورم ورودی کلاس و کاربر کلاس هست نه برنامه برنامه ای در کار نیست فرض کنید کاربر در "برنامه" ویژوال استودیو کلاس من رو از یه لایبرری دریافت کرده و میخواد استفاده کنه این وسط هیچ برنامه ای در کار نیست و کاربر کاربر کلاس در ویژوال استودیو هست همین انقدر پیچیده نیست:41:نقل قول:
سلامنقل قول:
بابا گير دادي به اين ماشين حساب ها!
ايول كار خوبيه. بايد سمج باشي تا ياد بگيري. من نميدونم انگيزت از اين كاري كه توضيح دادي چيه ولي چون هدف آموزشه حتي اگر روشت غير معقول هم باشه اشكالي نداره چون بهر حال بايد توانائيت رو بالا ببري.
ببين وقتي داري يه كدي مينويسي خيلي مهمه كه اين كد را داري براي چه رويدادي يا همون event اي مينويسي. هر كنترلي ( مثه دكمه يا تكست باكس ) يه سري ايونت واسه خودش داره كه براي ديدنشون كافيه اون كنترل را روي فرمت انتخاب كني و در بالاي پنجره پراپرتي كه سمت راست نمايش داده ميشه روي علامت رعد و برق!!!! كليك كني. اينطوري ليست همه اينوت هاي اون كنترل مياد و ميتوني ايونت مورد نظرت رو با دبل كليك ايجاد كني. ( براي ايجاد ايونت پيش فرض هر كنترل فقط كافيه روي خودت كنترل دبل كليك كني و نيازي نيست به اين قسمت بياي )
بعد از اين مرحله نوبت به نوشتن كد ميرسه. تو كد نوشتن بايد خوب فكر كني و همه نياز هاي برنامت حتي اگر خيلي ساده هم باشه در نظر بگيري. مثلا برنامه بيچاره بايد بدونه اگر كاربر بجاي عدد، دو تا حرف را گذاشت و علامت ضرب را زد اون بيچاره چكار بايد بكنه. هر چقدر شما بتوني بهتر همه حالات ممكن رو در نظر بگيري برنامت بهتر و استوارتر ميشه. شما بايد اينطور فرض كني كه هميشه يك موجود ساديست هم كاربر برنامت هست كه همه تلاشش رو ميكنه تا برنامت هنگ كنه. شما بعنوان برنامه نويس بايد تلاش كني تا نذاري اون مخ برنامت رو بتركونه! ( اگر بخوام تخصصي بگم بايد بگم كه بايد همه استثنائات را بدرستي هندل كني )
يك روش خوب و معقول هم بايد براي حل مساله ات در نظر بگيري. معقولترين روشي كه براي نوشتن يه ماشين حساب وجود داره رو ميتوني تو ماشين حساب ويندوزت ببيني. فكرش رو بكن كه مخ هاي مايكروسافت اومدن ماشين حساب نوشتن! مطمئن باش بهتر از روش اونا وجود نداره. البته براي تمرين ميتوني شما هر روشي رو ميخواي امتحان كني ولي بهتره تمركز اصليت رو روي روش درست بذاري.
من الان دو تا تمرين ماشين حساب بهت ميدم. اين دو تا رو حل كن و كدش رو بهم بده. بعدش قول ميدم همه سوالات ذهنت حل ميشه و كلي پيشرفت ميكني.
تمرين اول : ماشين حسابي بنويسيد كه شامل چهار كنترل باشد( نه بيشتر نه كمتر). دو عدد تكست باكس. يك عدد دكمه و يك عدد ليبل. و بتواند 4 عمل اصلي را بدرستي محاسبه كند.
تمرين دوم: ماشين حسابي بنويسيد كه شامل چهار كنترل باشد( نه بيشتر نه كمتر). يك عدد تكست باكس. دو عدد دكمه و يك عدد ليبل. و بتواند 4 عمل اصلي را بدرستي محاسبه كند.
تمرين سوم : ماشين حسابي بنويسيد كه شامل چهار كنترل باشد( نه بيشتر نه كمتر).دو عدد تكست باكس. يك عدد ليبل و يك عدد كومبو باكس و بتواند 4 عمل اصلي را بدرستي محاسبه كند.
پاورقي 1: پيوشند اسم دكمه btn، تكتست باكس txt ليبل lbl و كومبو باكس cmb انتخاب كن.
پاورقي 2: اين تمرين ها ساده نيستند. اگر نتونستي حل كني نااميد نشو. ولي حتما همه تلاش و خلاقيتت رو بخرج بده. مطمئن باش كلي چيز ياد ميگيري اگر خودت قشنگ روشون كار كني وقتي جواب رو من بهت بدم اونقت خيلي چيزها ياد ميگيري. لطفا موقتا كارها و سوالاتت رو بذار كنار و روي اين 3 تا تمرين كار كن
خب اگر شما ميخواهيد از يك كلاس استفاده كنيد بالاخره بايد اونو توي يه پروژه استفاده كنيد. من اصلا درك نميكنم كه تصور شما از يك كلاس چيه. مگه ميشه از يه كلاس همينطوري استفاده كرد. بايد كلاس شما در قالب يك پروه باشه و پروژه هم برنامه يا هر چيزيه كه ويوال استديو ميسازتش.نقل قول:
شما ميخواهيد يه قانوني براي ورودي هاي كلاستون بذاريد. خب منم به شما عرض ميكنم هيچ كلاسي خودش نميره از جايي ورودي بدزده. شمائيد كه ورودي را به اون ميديد. خب ورودي نامعتبر را قبل از كلاس بررسي كرده و پيام مورد نظرتون را بديد. شما با كلاس رفتاري مثه يه متد نداشته باشيد. ورودي هاي يك متد را براحتي ميشه داخلش بررسي كرد ولي من تا حالا چنين كاري را در مورد يك كلاس نه ديدم نه شنيدم. البته هيچكاري نشد نداره. بهرحال من شرمندم و نميتونم كمكتون كنم
سلامنقل قول:
مرسی
چشم
همین الان شروع میکنم.انشالا که بتونم با حلشون لااقل جواب کمک و زحمتاتو بدم :11:
یا خدا خو هر عمل اصلی(ضرب و اینا)یه دکمه میخواد
نمیخواد؟
لابد نمیخواد که معلم گفته فقط یه دکمه
میرویم سر تلاشمان
خب دیگه!گفتم که تمریناش راحت نیستن. البته راحتن ها ولی با توجه به نوع مشکلات تو اگر اونا رو یاد بگیری خیلی راه میفتی. بعضی چیزها رو باید تو عمل یادبگیری تا اینکه من توضیح بدم.البته طبیعیه که میزان علاقه من به کمک کردن شما به اندازه ی جدیت خودته. تا الان جدیتت خوب بوده ولی خدائی کند بودی.نقل قول:
سلام
باور کنید دیگه خجالت میکشم میام سوال میکنم ولی خب چه کنم:41:درباره تمرینه اوله:ببینید به نظر من باید توو تکست باکس یک بعد عدد اول که وارد میشه همونجا عملگر هم وارد شه و تکست باکس دوم عدد دوم و برای عملگر یک متغییر تعریف کنیم.و وقتی دکمه رو میزنیم(که من دگمه رو دکمه مساوی قرار دادم)از فرمان ifکمک بگیریم و بگیم مثلا اگه متغیر عملگر +بودadade1+adade 2بنداز تویه لیبل
نمیدونم ایده ام درسته یا نه
اگه آره سوال دارم
1=متغییر برای عملگر نوعش چیه
2=من چه جوری دستور رو بنویسم که بگم بعد ادد اول توو تکست باکس یک عملگر بیاد
البته من خواستم به کمک کد اسکی هم حلش کنم ولی باز دیدم نمیشه
مثلا بگم کد اسکی ضرب رو که زد کلید رو که زدیم ضرب صورت بگیره ولی اونجوری هم نمیشه چون من چه جوری به سیستم حالی کنم مثلا با شیفت بگیره شاید عدد زده بود
خلاصه شاید ایده هام خنده دار باشن ولی بهم بگین اگه هم اشتباهن بگین باز سعی میکنم روش دیگه حل کنم
بازم ممنونم:11:
سلام
این خیلی خوبه که شما برای خودتون ایده دارید. ببینید یک مساله را ممکنه بشه از 10 طریق حلش کرد. اینیم که شما گفتید میشه هرچند که ممکنه بهترین راه نباشه. اگر بخوواهید از این طریق حلش کنید باید مقدار تکست باک اول را داخل یه متغیر رشته ای (استرینگ) بریزید بعد از اون براساس کاراکتر آخر تکست باکس اول که علی القاعده یکی از علائم ریاضیه شرط بذاری. برای اینکه بتونی یک متغیر رشته ای رو به اجزاش تقسیم کنی باید از متد substring استفاده کنی. این روشی کف به ذهنت رسیده عملیه ولی نه جالبه و نه امن. خیلی سخته که بتونی امنیت برنامت رو به این شکل حفظ کنی. یادت هست که گفتم باید فکر کنی تو کاربرهای برنامت آدم سادیسم هم وجود داره.
همونطور که قبلا گفتم سرعتت پائینه. روزی 100 تا سوال هم بپرسی من ناراحت نمیشم ولی وقتی میبینم اینقد کندی کمی ناراحت میشم.
باور کن اینقد هم پیچیده نیست. یه کمی خلاقیت و دوق و علافه میخواد.
بازم راه حل هاتون رو بهم بگید. خیلی بهتر از اینه که بخواهید کد بذارید اینجا.
تو برنامه هایی که شما فعلا مینویسید اصلا به کد اسکی و اینجور چیزها فکر هم نکنید. راههای بسیار راحت تری وجود داره. نا امید نشید و دست به کد شید
فعلا...
چند نكته كه شايد بدردتون بخوره :
1 . كنترل ها رو ميشه روي فرم در مواقع دلخواه نامرئي يا ديسيبل كرد. اينكار با تغيير دو خاصيت visible و enabled ممكنه. مثلا اگر يك دكمه نامرئي بشه ديگه در جاي اون دكمه هيچ چيز نمايش داده نميشه وفقط شما فرم را ميبينيد. و از پراپرتي enabled اون no بشه ديگه قابل كليك كردن نيست. از اين دو خاصيت ميشه خيلي استفاده ها كرد. مثلا كي ميدونه روي فرم شما چند تا ليبل وجود داره؟ شما ميتونيد روي فرمتون صد تا ليبل بذاريد كه تنها يكيشون قابل مشاهده است و بقيشون مخفي باشه.
2 . براي انجام يكعمليات خاص هميشه لازم نيست ما از يك دكمه استفاده كنيم. چيزيكه ما تو ويندوز عادت كرديم اينه كه مثلا بايد حتما ok را بزنيم تا تغييراتمون اعمال بشه ولي تو برنامه ايكه شما مينويسيد ميتونيد كاري كنيد كه بدوننياز به دكمه ده جور كار انجام بشه. اگر به قسمت اينوت هاي كنترل ها سر بزنيد اين مطلب رو ميبينيد. مثلا شما ميتونيد تعيين كنيد كه وقتي موس را روي تكست باكستون برديد كلا فرم بسته شه!!! در واقع اگر درك صحيحي از ايونت ها پيدا كنيد متوجه ميشيد كه فرقي بين دكمه زدن يا مثلا چند ثانيه نگه داشتن موس روي يك كنترل نيست. همه اينها از نظر ويژوال استديو ايونته.
3. براي برسسي شرايط خوب كه حتما از if استفاده كنيد. If ساختار ساده ولي كاربردي اي داره. شرط گذاشتن يكي از راههاي بالا بردن امنيت برنامتونه. مثلا شرط بذاريد كه اگر مقدار وارد شده در تكست باكس عدد بود فلان كار رو بكنه ولي اگر عدد نبود كاري نكنه.محاله بدون استفاده از شرط ها بشه يه برنامه بدرد بخور و مطمئن نوشت. پس حتما سعي كن در مواقع لازم از اين ابزار استفاده كني
4. قبلا در مورد هندل كردن استثنائات توضيح دادم. براي باز كردن بيشتر مساله بايد بگم كه شما هر چقدر برنامتون قوي باشه ممكنه با مشكلاتي رو برو بشه. مثلا ممكنه برنامتون در حال استفاده از شبكه باشه ولي يهو ارتباط شما قطع بشه و امثالهم در اين مواقعبرنامه با حالتي مواجه ميشه كه خودش شعور مديريتش رو نداره و شما بايد بهش بگيد تو اين مواقع چكار بايد بكنه. مثلا اگر شما به برنامتون بگيد هر چي كاربر تو تكست باكس ريخت رو تبديل به عدد كن ناخود آگاه داريد به برنامتون ميگيد كه اگر كاربر عدد وارد نكرد تو غاط بزن! پس اين نوع كد نوشتن غلطه. شما بايد به برنامتون بگيد عزيزم سعي كن اين كارو بكني و اگر نتونستي فداي سرت بجاش يه كار ديگه بكن. براي اينكه اينطوري با برنامتون صحبت كنيد بايد از ساختار try....catch استفاده كنيد. مثال عمليش :
قسمت فاينالي كدي هست كه چه برنامه تلاشش موفقيت آميز باشه چه نباشه اجرا ميشه. پس هميشه دو تا از اين سه تا بلوك رو انجام ميشه. يا try و finaly. يا catch و finalyنقل قول:
try
{
int a;
a = convert.toInt32(txtAdade1.text);
}
catch
{
messagebox.show("لطفا فيلد ها را به شكل صحيح پر نمائيد");
txtAdade1.text = string.Empty;
}
finaly
{
this.width +=10;
}
(دستور توي فاينالي در اينجا ميگه كه عرض فرم را 10 تا زياد كن ! )
اقا من برم برا ناز کشیدن برنامه:31:
سلام و باز ممنون
میدونم کندم باور کن زیادی کله پوکم نمیدونم چرا مغزم فرمان نمیده ولی تلاشمو میکنم زودتر یاد بگیرم
باور کن معذرت اینقد مزاحم شما میشم:11:
من برم باز کار
راستی این اخری رو چندبار خوندم فک کنم با کمک این راهنماییت انشالا بتونم روش بهتری بدم
مرسی
فعلا