HosseinProgrammer
چهارشنبه 31 مرداد 1386, 13:07 عصر
سلام. من چند تا سوال از سی شارپ دارم. خیلی ممنون میشم اگر جواب بدید.
1- توی سی پلاس پلاس یه تابع داریم به نام Delay که کارش وقفه انداختن بین اجرای دستوراته طوری که CPU رو درگیر نمیکنه. معادلش در سی شارپ چیه؟ اگه باید از تایمر استفاده کنم، چگونه؟
2- من یک کلاس دارم که کنترل های یک فرم در آن تعریف شده است. مثلا یک کنترل Label که public هم تعریف شده، رو میخوام در یک کلاس دیگه استفاده کنم. لازمه بگم که یک شی از کلاس اول ایجاد کردم و خواستم بصورت زیر خصوصیت Text لیبل را تنظیم کنم. ولی هیچ تغییری در اون لیبل نمیبینم! مشکل کجاست؟
Class1 A = new Class1();
A.label1.Text = "Ali";
3- وقتی از System.Media.SoundPlayer استفاده میکنم میخواهم بدونم که فایل صوتی که load کردم چند ثانیه است؟ یعنی:
SoundPlayer Player = new SoundPlayer();
Player.SoundLocation = "آدرس فایل";
حالا این فایلی که لود شده، چند ثانیه است؟
4- سوال چهارم در رابطه با سوال سومه. وقتی یک فایل لود شد، آیا میشه کاری کرد که دستورات متوقف بشه تا کل فایل پخش بشه و سپس دستورات ادامه پیدا کنه؟!
---------------------------
توضیحات بیشتر:
در مورد سوال دوم:
من بخش هایی از برنامه رو اینجا کپی میکنم.
برنامه Form1:
f های اضافی رو در نظر نگیرید . برای اصلاح ادیتور گذاشتمشون. ضمنا آکولادها هم برعکس نشون داده شده. }{
publicpartialclassForm1 : Form
}
public Form1() f
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
Class2 B = newClass2(); f
B.Function(); f
}
-----------------------------------------------------------
classClass2
{
publicvoid Function() f
{
Form1 C = newForm1(); f
C.label1.Text = "Salam"; f
}
}
staticclassProgram
{
///
/// The main entry point for the application.
///
[STAThread]
staticvoid Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(newForm1());
}
}
-----------------------------------------------------------------------
در Form Designer
private System.Windows.Forms.Button button1;
public System.Windows.Forms.Label label1;
ولی با کلیک روی Button هیچ تغییری در label ایجاد نمیشه! واقعا چرا؟!
------------------------------------------------------------
در مورد سوال سوم و چهارم:
Duration متاسفانه وجود نداشت. در حقیقت چیزی که توی سوال چهارم میخوام ترکیب سوال یک و سه هستش. کد زیر رو ببینید تا بیشتر توضیح بدم:
using System.Media;
int x = 5;
int y = 2;
x = x*y;
if( x==10 ){
SoundPlayer Player = new SoundPlayer();
Player.SoundLocation = "آدرس";
Player.Play();
x = 3;
}
y = 4;
من میخوام دستوری باشه که وقتی Player.Play اجرا شد، کامپایلر اونقدر وایسه تا پخش فایل صوتی تموم بشه. یعنی باید به مدت زمان فایل صوتی متوقف بشه و x=3 انجام نشه. برای اینکار اگه بخوام خودم انجام بدم باید مدت زمان فایلی که داره پخش میشه رو بدونم تا با Sleep کامپایلر رو متوقف کنم. لازمه بگم که مدت زمان فایل صوتی رو از قبل نمیدونم و وقتی که لود شد باید بفهمم.
امیدوارم منظورمو رسونده باشم. تو سوال چهار هم دقیقا همینو میخوام.
اگه بتونید کمکم کنید که واقعا ممنون میشم.
1- توی سی پلاس پلاس یه تابع داریم به نام Delay که کارش وقفه انداختن بین اجرای دستوراته طوری که CPU رو درگیر نمیکنه. معادلش در سی شارپ چیه؟ اگه باید از تایمر استفاده کنم، چگونه؟
2- من یک کلاس دارم که کنترل های یک فرم در آن تعریف شده است. مثلا یک کنترل Label که public هم تعریف شده، رو میخوام در یک کلاس دیگه استفاده کنم. لازمه بگم که یک شی از کلاس اول ایجاد کردم و خواستم بصورت زیر خصوصیت Text لیبل را تنظیم کنم. ولی هیچ تغییری در اون لیبل نمیبینم! مشکل کجاست؟
Class1 A = new Class1();
A.label1.Text = "Ali";
3- وقتی از System.Media.SoundPlayer استفاده میکنم میخواهم بدونم که فایل صوتی که load کردم چند ثانیه است؟ یعنی:
SoundPlayer Player = new SoundPlayer();
Player.SoundLocation = "آدرس فایل";
حالا این فایلی که لود شده، چند ثانیه است؟
4- سوال چهارم در رابطه با سوال سومه. وقتی یک فایل لود شد، آیا میشه کاری کرد که دستورات متوقف بشه تا کل فایل پخش بشه و سپس دستورات ادامه پیدا کنه؟!
---------------------------
توضیحات بیشتر:
در مورد سوال دوم:
من بخش هایی از برنامه رو اینجا کپی میکنم.
برنامه Form1:
f های اضافی رو در نظر نگیرید . برای اصلاح ادیتور گذاشتمشون. ضمنا آکولادها هم برعکس نشون داده شده. }{
publicpartialclassForm1 : Form
}
public Form1() f
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
Class2 B = newClass2(); f
B.Function(); f
}
-----------------------------------------------------------
classClass2
{
publicvoid Function() f
{
Form1 C = newForm1(); f
C.label1.Text = "Salam"; f
}
}
staticclassProgram
{
///
/// The main entry point for the application.
///
[STAThread]
staticvoid Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
Application.Run(newForm1());
}
}
-----------------------------------------------------------------------
در Form Designer
private System.Windows.Forms.Button button1;
public System.Windows.Forms.Label label1;
ولی با کلیک روی Button هیچ تغییری در label ایجاد نمیشه! واقعا چرا؟!
------------------------------------------------------------
در مورد سوال سوم و چهارم:
Duration متاسفانه وجود نداشت. در حقیقت چیزی که توی سوال چهارم میخوام ترکیب سوال یک و سه هستش. کد زیر رو ببینید تا بیشتر توضیح بدم:
using System.Media;
int x = 5;
int y = 2;
x = x*y;
if( x==10 ){
SoundPlayer Player = new SoundPlayer();
Player.SoundLocation = "آدرس";
Player.Play();
x = 3;
}
y = 4;
من میخوام دستوری باشه که وقتی Player.Play اجرا شد، کامپایلر اونقدر وایسه تا پخش فایل صوتی تموم بشه. یعنی باید به مدت زمان فایل صوتی متوقف بشه و x=3 انجام نشه. برای اینکار اگه بخوام خودم انجام بدم باید مدت زمان فایلی که داره پخش میشه رو بدونم تا با Sleep کامپایلر رو متوقف کنم. لازمه بگم که مدت زمان فایل صوتی رو از قبل نمیدونم و وقتی که لود شد باید بفهمم.
امیدوارم منظورمو رسونده باشم. تو سوال چهار هم دقیقا همینو میخوام.
اگه بتونید کمکم کنید که واقعا ممنون میشم.