PDA

View Full Version : مشکل با کلاس و تابع



modirmasool
دوشنبه 12 مهر 1389, 00:40 صبح
سلام دوستان. خسته نباشین.
من از ویبی6 میام.:چشمک:
میخوام یه کلاس و تابع بنویسم ولی همش با خطا مواجه میشم. کد زیر رو ببینین.




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 WindowsFormsApplication1
{

public partial class Form1 : Form
{
class a
{
public void func1()
{
MessageBox.Show("hello");
}

}

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
a objc = new a();
objc.func1;
}
}
}



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

صباح فتحی
دوشنبه 12 مهر 1389, 00:45 صبح
اینجا رو اشتب کردی

objc.func1();
جواب سوال دوم:add new item class file

modirmasool
دوشنبه 12 مهر 1389, 01:06 صبح
جواب سوال دوم:add new item class file

ممنون.
اینو نفهمیدم!:لبخند:
راستی چرا من وقتی کلاسم رو بعد از namespace WindowsFormsApplication1 یعنی قبل از public partial class Form1 : Form مینویسم،دیگه نمیتونم در محیط ویرایش، فرمم رو ببینم! و اینکه آیا این برداشتم درسته که namespace برای دسته بندی کلاسه و کلاس برای دسته بنده متدهای مختلفه؟
و سوال آخرم هم اینکه ما تو ویبی sub داریم که با تابع فرق داره، اینجا هم sub هستش؟
ممنون

صباح فتحی
دوشنبه 12 مهر 1389, 01:11 صبح
میگم روی پروژه راست کلیک کن
Add
Net item
Class
________________________
namespace برای دسته بندی کلاسه و کلاس برای دسته بنده متدهای مختلفه؟
جواب:بله
_____________________________
تو وی بی ساب خروجی نداشت.اینجا از کلمه کلیدیVoid استفاده میکنیم..
اون یکی سوالتو متوجه نشدم

modirmasool
دوشنبه 12 مهر 1389, 01:18 صبح
تو وی بی ساب خروجی نداشت.اینجا از کلمه کلیدیVoid استفاده میکنیم..
اون یکی سوالتو متوجه نشدم

ممنون
پس چرا وقتی void رو برمیدارم خطا میگیره؟ من توی تابع ام فقط پیغام میدم و قرار نیست چیزی رو برگردونم.

اون سوال دیگم اینه که کد زیر چرا نمیذاره در خود IDE فرم رو ببینیم؟


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 WindowsFormsApplication1
{
class a
{
public func1()
{
MessageBox.Show("hello");
}

}
public partial class Form1 : Form
{


public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
a objc = new a();
objc.func1();

}
}
}


با تشکر

صباح فتحی
دوشنبه 12 مهر 1389, 01:21 صبح
خب تو خروجی نداری پس باید void رو بنویسی دیگه
اون بالای کد تب form design هست دیگه
اینجا وی بی نیست ها:لبخند:

modirmasool
دوشنبه 12 مهر 1389, 01:33 صبح
خب تو خروجی نداری پس باید void رو بنویسی دیگه


از آخر چیکار کنم.:گریه: مگه نگفتین که void کار sub رو میکنه؟



اون بالای کد تب form design هست دیگه

دیگه در اون حد که میدونم.:لبخند: خودم گرفتم، مثکه تو سی شاپ، اولین کلاس باید کلاس فرم باشه تا در حالت طراحی بشه فرم رو دید.



اینجا وی بی نیست ها:لبخند:
حیف که از مجبوری اومدم به سمت سی شارپ. وگرنه یه تار موی ویبی6 هم به سی شارپ نمیارزه!:قهقهه: سینتکسش خیلی دوست داشتنیه.
دیگه زیاد ازش تعریف نمیکنم چون فکر کنم الان از تالار پرتم میکنین بیرون.:لبخند:


یه چیز دیگه هم اینکه الان در کد زیر که برای کلاسم، پابلیک یا استاتیک رو ننوشتم، تکلیفش چی میشه؟



class a
{

public void func1()
{
MessageBox.Show("hello");
}

}

صباح فتحی
دوشنبه 12 مهر 1389, 01:40 صبح
ز آخر چیکار کنم.:گریه: مگه نگفتین که void کار sub رو میکنه؟
اره دیگه هر متدی که چیزیو برگشت نداد پشتش void بنویس دیگه.سخته؟

صباح فتحی
دوشنبه 12 مهر 1389, 01:44 صبح
حیف که از مجبوری اومدم به سمت سی شارپ. وگرنه یه تار موی ویبی6 هم به سی شارپ نمیارزه!:قهقهه: سینتکسش خیلی دوست داشتنیه.
دیگه زیاد ازش تعریف نمیکنم چون فکر کنم الان از تالار پرتم میکنین بیرون.:لبخند:

[]
منم اول حرف تورو میزدم اما الان یه تار مو سی شارپ رو به محیط ضعیف و کلاسیک وی بی نمیدم:لبخند:
کلاس هم پرویته

modirmasool
دوشنبه 12 مهر 1389, 01:47 صبح
ز آخر چیکار کنم.:گریه: مگه نگفتین که void کار sub رو میکنه؟
اره دیگه هر متدی که چیزیو برگشت نداد پشتش void بنویس دیگه.سخته؟

void رو فهمیدم.:لبخند:
نگاه کنین ما توی ویبی6 مینویسیم:



Public Function ali()
ali = 10
End Function

حالا اگه تابع ali رو فراخوانی کنیم، بهمون میده 10 و فراخوانی اش هم اینطوریه:

Print ali()

حالا تو سی شارپ چجوری باید نوشتش؟
ممنون

leilaaa
دوشنبه 12 مهر 1389, 01:54 صبح
من یک کلاس با دو عضو int a,b دارم .حالا می خوام یک آرایه از نوع این کلاس تعریف کنم و مقدار بدم اما نمیشه چرا؟




Class1 [] cl=new class1[2]; 1
Cl[0].a=4; 2

صباح فتحی
دوشنبه 12 مهر 1389, 01:55 صبح
public int ali()
{
return 10;
}

modirmasool
دوشنبه 12 مهر 1389, 02:04 صبح
public int ali()
{
return 10;
}


اینی که شما گفتین عدد بر میگردونه. من منظورم این بود که آیا اینجا مثل ویبی، مقدار تابع در اسم خودش ذخیره میشه یا نه؟ مثلا میشه گفت:
return ali+5؟
ممنون

صباح فتحی
دوشنبه 12 مهر 1389, 02:07 صبح
این کد که خطا ندازره


public int ali()
{
return 10;
}

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = ali().ToString();
}

صباح فتحی
دوشنبه 12 مهر 1389, 02:09 صبح
در سی شارپ با کلمه کلیدی return مشخص میکنیم که تابعمون چه چیزی رو برگشت بده

صباح فتحی
دوشنبه 12 مهر 1389, 02:10 صبح
من یک کلاس با دو عضو int a,b دارم .حالا می خوام یک آرایه از نوع این کلاس تعریف کنم و مقدار بدم اما نمیشه چرا؟




Class1 [] cl=new class1[2]; 1
Cl[0].a=4; 2

کد رو کامل بذار ببینیم میتونیم راهنمایی کنیم

modirmasool
دوشنبه 12 مهر 1389, 02:13 صبح
این کد که خطا ندازره


public int ali()
{
return 10;
}

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = ali().ToString();
}

ماشاءا... چقدر سریع جواب میدین.:متعجب: من 30 ثانیه بعدش که دیدم اشتباه از من بوده، جمله رو پاک کردم ولی نگو شما کی ها دیده بودینش.:لبخند:

صباح فتحی
دوشنبه 12 مهر 1389, 02:15 صبح
بله مااینیم:قهقهه:

ahmadsadeghi2
پنج شنبه 06 تیر 1392, 22:59 عصر
سلام دوستان
خسته نباشی
والا الان که این تایپیک دیدم منم یه مشکل با فراخوانی توابع در فرم دیگر در سی شارپ دارم
مشکل من اینه که مثلا میخوام یه کنترل هایی را از روی فرم دیگر تنظیم کنم یا فراوانی کنم
اما نمیشه
اینم کد های برنامه :
این ماله فرم 1:


public void progress()



{


toolStripProgressBar1.Visible = true;

lbl_state.Visible = true;

timer1.Enabled = true;



}

 


public void timer1_Tick(object sender, EventArgs e)



{

toolStripProgressBar1.Value += 10;


if (toolStripProgressBar1.Value == 100)



{


timer1.Enabled = false;



toolStripProgressBar1.Value = 0;


lbl_state.Visible = false;

toolStripProgressBar1.Visible = false;



}

}

و اینم کد ها در فرم دیگر :

private void button2_Click_1(object sender, EventArgs e)



{


Form1 frm1 = new Form1();



frm1.progress();

}



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