PDA

View Full Version : سوال: انتقال اطلاعات از فرم دوم به فرم اول



matf2009
یک شنبه 21 شهریور 1389, 09:41 صبح
با سلام خدمت دوستان
من یک برنامه دارم مینویسم که میخوام وقتی در فرم دوم موس حرکت میکند در فرم اولم موقعیت موس رو در هر لحظه نمایش بده البته الان کدی که نوشتم فقط یکبار موقعیت موس رو نشون میده میشه منو راهنمایی کنید

ASKaffash
یک شنبه 21 شهریور 1389, 09:59 صبح
سلام
درون فرم 1 :


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
new Form2(this.label1).Show();
}
}

درون فرم 2 :


public partial class Form2 : Form
{
private Label L;
public Form2(Label L)
{
InitializeComponent();
this.L = L;
}
private void Form2_MouseMove(object sender, MouseEventArgs e)
{
this.L.Text = e.X.ToString() + "," + e.Y.ToString();
}
}

ali_autumnal
یک شنبه 21 شهریور 1389, 10:06 صبح
یه روش هم روش استفاده از setting نرم افزار هست. متغیر هایی تعریف کنید در زمان های لازم مقداردهی کنید و هرجایی که نیاز داشتید استفاده کنید.
موفق باشید
علی پاییزی

اَرژنگ
یک شنبه 21 شهریور 1389, 10:10 صبح
بهترین و اصولی ترین روش استفاده از setting نرم افزار هست. متغیر هایی تعریف کنید در زمان های لازم مقداردهی کنید و هرجایی که نیاز داشتید استفاده کنید.
موفق باشید

اشتباه‌ترین و غیره اصولیترین همین روشی است که فرمودید، متاسفانه قاطعیت گفتن روشهایه اشتباه بقیه را هم بیراهی میکشانه.

قبل از جواب دادن دقت کنید که اسمتان را نقل قول حذف کردم که فقط اشتباه بودن روش مورد نظر باشد نه شخصی که اراعه‌اش داده، چونکه هرکی قابلیت یادگرفتن روشهایه درست را همیشه دارد.

ASKaffash
یک شنبه 21 شهریور 1389, 10:11 صبح
بهترین و اصولی ترین روش استفاده از setting نرم افزار هست. متغیر هایی تعریف کنید در زمان های لازم مقداردهی کنید و هرجایی که نیاز داشتید استفاده کنید.
موفق باشید
علی پاییزی
سلام
یعنی از یک متغیر staic و public استفاده شود ؟

matf2009
یک شنبه 21 شهریور 1389, 10:14 صبح
ممنون از راهنماییتون اما من سوالمو اشتباه عنوان کردم فایلی که قراره موس روش حرکت کنه یه فرم سومی که تو سط فرم دیگه ای باز شده در این صورت چیکار باید بکنم

اَرژنگ
یک شنبه 21 شهریور 1389, 10:29 صبح
سلام
درون فرم 1 :


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
new Form2(this.label1).Show();
}
}

درون فرم 2 :


public partial class Form2 : Form
{
private Label L;
public Form2(Label L)
{
InitializeComponent();
this.L = L;
}
private void Form2_MouseMove(object sender, MouseEventArgs e)
{
this.L.Text = e.X.ToString() + "," + e.Y.ToString();
}
}

این روش درست نیست، از ایونتها فرم۱ در فرم ۲ استفاده کنید.

ali_autumnal
یک شنبه 21 شهریور 1389, 10:29 صبح
اشتباه‌ترین و غیره اصولیترین همین روشی است که فرمودید، متاسفانه قاطعیت گفتن روشهایه اشتباه بقیه را هم بیراهی میکشانه.

قبل از جواب دادن دقت کنید که اسمتان را نقل قول حذف کردم که فقط اشتباه بودن روش مورد نظر باشد نه شخصی که اراعه‌اش داده، چونکه هرکی قابلیت یادگرفتن روشهایه درست را همیشه دارد.

لطفا بیشتر توضیح دهید؟
چرا؟ روش مناسبی نیست؟
بنظرم بهتر از public کردن اشیاء هست.
--------------------

سلام
یعنی از یک متغیر staic و public استفاده شود ؟

با این روش هم میشه تو program.cs استفاده کرد.

اَرژنگ
یک شنبه 21 شهریور 1389, 10:35 صبح
لطفا بیشتر توضیح دهید؟
چرا؟ روش مناسبی نیست؟
بنظرم بهتر از public کردن اشیاء هست.
روش public کردن اشیاء هم اشتباه است، منتها برایه تازه کارها که قابلیت استفاده از روشهایه درست را هنوز ندارند نادیده گرفته میشه.
دلایل اشتباه بودنش زیاد هست، قدیمیترینش برمیگرده به استفاده از متغییرهایه سراسری برمیگرده. حتی قبل از برنامه‌نویسی شی‌گرائی استفاده از این روش درست نبود.

اَرژنگ
یک شنبه 21 شهریور 1389, 10:41 صبح
سلام
یعنی از یک متغیر staic و public استفاده شود ؟
خیر، روش اشتباه ، روش درست استفاده از ایونتهاست.

ASKaffash
یک شنبه 21 شهریور 1389, 10:49 صبح
این روش درست نیست، از ایونتها فرم۱ در فرم ۲ استفاده کنید.
سلام
میشه همین مثال را با گفته خودتان اصلاح و قرار دهید
--------------------

خیر، روش اشتباه ، روش درست استفاده از ایونتهاست.
سلام
این سئوال را پرسیدم تا مطمئن شوم منظورشان static و ... است در ارجاع بعدی می نوشتم پس یک کبریت زیر OOP زده می شود

اَرژنگ
یک شنبه 21 شهریور 1389, 11:01 صبح
سلام
میشه همین مثال را با گفته خودتان اصلاح و قرار دهید
منتظرم که یکی دیگر به جواب درست برسه، نمیخواهم با فرستادن جواب کیف پیدا کردن جواب درست را از بقیه صلب کنم.
ولی باور کنید تمام معلومات کافی برایه جواب درست را دارید، اگر بعد از مدتی تفکر هنوز جواب درست را کسی دیگر نفرسته من میفرستم.

ali_autumnal
یک شنبه 21 شهریور 1389, 11:08 صبح
استفاده از property و Set کردن مقدار متغیر با آن.

ASKaffash
یک شنبه 21 شهریور 1389, 11:13 صبح
ممنون از راهنماییتون اما من سوالمو اشتباه عنوان کردم فایلی که قراره موس روش حرکت کنه یه فرم سومی که تو سط فرم دیگه ای باز شده در این صورت چیکار باید بکنم
سلام
از Constructor فرمها شی Label را به فرم سوم برسانید مثل فرم یک به فرم دو

اَرژنگ
یک شنبه 21 شهریور 1389, 11:16 صبح
سلام
از Constructor فرمها شی Label را به فرم سوم برسانید مثل فرم یک به فرم دو
هامنطوری که گفتم روش درست از ایونتها استفاده میکند و جواب را به این بیجهت پیچیده نمیکنه.

ASKaffash
یک شنبه 21 شهریور 1389, 11:28 صبح
سلام
اینطوری قبوله ؟


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
new Form2(MyMouseMove).Show();
}
private void MyMouseMove(object sender, MouseEventArgs e)
{
this.label1.Text = e.X.ToString() + "," + e.Y.ToString();
}
}



public partial class Form2 : Form
{
public Form2(MouseEventHandler MH)
{
InitializeComponent();
this.MouseMove += MH;
}
}

برای رسیدن به فرم 3 بازهم باید مثلا شی MH را پاس داد خیلی فرقی نمی کنه

اَرژنگ
یک شنبه 21 شهریور 1389, 12:06 عصر
برای رسیدن به فرم 3 بازهم باید مثلا شی MH را پاس داد خیلی فرقی نمی کنه

بسیار به جواب نزدیکه و میتونید وابستگی به پاس دادن را هم حذف کنید کامل میشه.

ASKaffash
یک شنبه 21 شهریور 1389, 12:13 عصر
بسیار به جواب نزدیکه و میتونید وابستگی به پاس دادن را هم حذف کنید کامل میشه.
سلام
فقط delegate به ذهنم میرسه که میشه کدها را پاس داد

اَرژنگ
یک شنبه 21 شهریور 1389, 12:22 عصر
سلام
فقط delegate به ذهنم میرسه که میشه کدها را پاس داد
ایونتها برادر دلگت حساب میشند، و اگر بتونید با دلگت این کار را انجام بدید با ایونت تمیزتر میتونید.
در مورد اتچ کردن ایونتها، میتوانید از خارج یک شئی هم یک متدی که امضاش به نوع ایونت بخورد را هم اتچ کنید. (از دلگت هم میشه استفاده کرد ولی ایونت اصل کار است)

ASKaffash
یک شنبه 21 شهریور 1389, 12:47 عصر
سلام
میتوانید از خارج یک شئی هم یک متدی که امضاش به نوع ایونت بخورد را هم اتچ کنید
این موضوع را متوجه نشدم

اَرژنگ
یک شنبه 21 شهریور 1389, 12:56 عصر
سلام
میتوانید از خارج یک شئی هم یک متدی که امضاش به نوع ایونت بخورد را هم اتچ کنید
این موضوع را متوجه نشدم




private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2()
frm2.MouseMove += MyMouseMove;
frm2.Show();
}

matf2009
یک شنبه 21 شهریور 1389, 13:37 عصر
د.ستان عزیز من هنوز مشکلم حل نشده نمیتونم از توی فرم سوم بگم که حرکات موس رو در فرم اول نشون بده:عصبانی++:

اَرژنگ
یک شنبه 21 شهریور 1389, 13:47 عصر
د.ستان عزیز من هنوز مشکلم حل نشده نمیتونم از توی فرم سوم بگم که حرکات موس رو در فرم اول نشون بده:عصبانی++:
لطفاً تائیید کنید که :
فرم ۱ اولین فرمیه که باز میشه، از فرم ۱ فرم ۲ باز میشه، از فرم ۲ ، فرم ۳ باز میشه.
حالا وقتی که در فرم ۳ موس حرکت میکنه در فرم ۱ مشخصاتش نشان داده میشه؟ یا در فرم ۲؟
یا اصلاً سناریو چیزه دیگری است.

matf2009
یک شنبه 21 شهریور 1389, 13:49 عصر
درسته وقتی موس در فرم 3 حرکت میکنه مختصاتش در فرم 1 نشون داده بشه

ASKaffash
یک شنبه 21 شهریور 1389, 14:07 عصر
سلام
این Event کجا تعریف شده ؟


frm2.MouseMove

ASKaffash
یک شنبه 21 شهریور 1389, 14:14 عصر
د.ستان عزیز من هنوز مشکلم حل نشده نمیتونم از توی فرم سوم بگم که حرکات موس رو در فرم اول نشون بده:عصبانی++:
سلام
گفتم فرقی نمی کنه اینطوری :
در فرم 1:


public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
new Form2(MyMouseMove).Show();
}
private void MyMouseMove(object sender, MouseEventArgs e)
{
this.label1.Text = e.X.ToString() + "," + e.Y.ToString();
}
}

در فرم 2 :


public partial class Form2 : Form
{
MouseEventHandler MEH;
public Form2(MouseEventHandler MEH)
{
InitializeComponent();
this.MEH += MEH;
}
private void button1_Click(object sender, EventArgs e)
{
new Form3(MEH).Show();
}
}

در فرم 3 :


public partial class Form3 : Form
{
public Form3(MouseEventHandler MEH)
{
InitializeComponent();
this.MouseMove += MEH;
}
}

اَرژنگ
یک شنبه 21 شهریور 1389, 14:16 عصر
سلام
این Event کجا تعریف شده ؟


frm2.MouseMove


هیچ جا!
کدی که فرستادم شبه کد بود که فقط ایده اینکه چطوری باید اینکار انجام بشد را نشان بده نه اینکه کار کند.
جواب ضمیمه شده، ولی قبل از نگاه انداختن بهش یکمی خودتان سعی کنید، چونکه اگر با فکر خودتان درستش کنید واقعاً کیف میکنید.
بعدش هم یک نگاه به مثال ضمیمه بندازید.

ASKaffash
یک شنبه 21 شهریور 1389, 14:46 عصر
سلام
درسته حواسم نبود که Event مربوط به MouseMove یک فرم Public است

اَرژنگ
یک شنبه 21 شهریور 1389, 15:00 عصر
سلام
درسته حواسم نبود که Event مربوط به MouseMove یک فرم Public است
اون اصلاً مهم نیست، اصل کار اینه که اگر ایونتی نیست ما خودمان میسازیم و اضافه میکنیم و بهش هندلر هم اتچ میکنیم. چیزی که سعی کردم نشان بدم این بود که اگر فکر میکنید به اینکه اتفاق بخصوصی اتفاق افتاد (در این مثال حرکت موس یک فرم دیگر) نیاز دارید یک ایونت براش ِتعریف میکنیم که مشخص باشد.

matf2009
یک شنبه 21 شهریور 1389, 15:07 عصر
ممنون از همه دوستانی که کمک کردن تا من مشکلم حل بشه:لبخندساده:

matf2009
یک شنبه 21 شهریور 1389, 15:44 عصر
من بازم برام یه سوالی پیش اومده :خجالت: من موقعیت موسم مستقیم بر اساسe.x بدست نمیاد بلکه باید یک سری عملیات روش انجام بدم چون موقعیت موس من بر اساس موجودیتهای فرم 3 هست که در حالتهای مختلفی که کاربر کیده فرق میکنه میخواستم بدونم در این حالت چه جوری میتونم موقعیت موس رو به فرم اول بدم
این عکسی که گذاشتم نمونه ای از فرم سوم منه

ali_autumnal
یک شنبه 21 شهریور 1389, 15:47 عصر
متشكر از همه دوستان. عالي بود. من كه كيف كردم و خوشحالم از اينكه امروز چيزي ياد گرفتم.

اَرژنگ
یک شنبه 21 شهریور 1389, 15:56 عصر
من بازم برام یه سوالی پیش اومده :خجالت: من موقعیت موسم مستقیم بر اساسe.x بدست نمیاد بلکه باید یک سری عملیات روش انجام بدم چون موقعیت موس من بر اساس موجودیتهای فرم 3 هست که در حالتهای مختلفی که کاربر کیده فرق میکنه میخواستم بدونم در این حالت چه جوری میتونم موقعیت موس رو به فرم اول بدم

چه نوع عملیاتی؟ موقعیت نسبت به چی لازمش دارید؟

matf2009
یک شنبه 21 شهریور 1389, 16:02 عصر
چه نوع عملیاتی؟ موقعیت نسبت به چی لازمش دارید؟
من تو فرمم یک جدول دارم که موقعیت موسم بستگی به اون داره که خود این جدول مقادیرش بستگی به کابر داره

اَرژنگ
یک شنبه 21 شهریور 1389, 16:06 عصر
من تو فرمم یک جدول دارم که موقعیت موسم بستگی به اون داره که خود این جدول مقادیرش بستگی به کابر داره

دوست عزیز،
شما کلاهت را قاضی کن، ببین با این چیزی که گفتی اصلاً کسی میتونه به شما کمک کند؟

یا هم اینکه واقعاً چکاری میخواهید انجام بدید را با پروژه بفرستید ما به چشم خودمان ببینیم.

matf2009
یک شنبه 21 شهریور 1389, 16:16 عصر
ببینید من تو فرم دومم یک سری پارامتر هست که کاربر باید وارد کنه تا با استفاده از اونها جدولی در فرم 3 کشیده بشه حالا من بر اساس اون پارامترها باید موقعیت موس رو پیدا کنم که عملیاتش رو انجام دادم اما نمیدونم اینو چه جوری تو فرم 1 باید بشناسونم

sorenamusic
یک شنبه 21 شهریور 1389, 16:39 عصر
ممنون از همه دوستان منم استفاده کردم

اَرژنگ
دوشنبه 22 شهریور 1389, 01:31 صبح
ببینید من تو فرم دومم یک سری پارامتر هست که کاربر باید وارد کنه تا با استفاده از اونها جدولی در فرم 3 کشیده بشه حالا من بر اساس اون پارامترها باید موقعیت موس رو پیدا کنم که عملیاتش رو انجام دادم اما نمیدونم اینو چه جوری تو فرم 1 باید بشناسونم

چه پارامترهایی؟ بر چه حسابی جدول کشیده میشه؟ هدف اصلی چیه ؟ بنابر این چیزی که میگید مشکل اصلی اصلاً ربطی به خبردار شدن از اتفاقات بین فرمها نیست.

پروژه را با توضیحات نفرستید نمیتونیم بیشتر از این بدون دانستن جزعیات کمکتان کنیم.

matf2009
دوشنبه 22 شهریور 1389, 08:35 صبح
پروژه را با توضیحات نفرستید نمیتونیم بیشتر از این بدون دانستن جزعیات کمکتان کنیم.[/quote]

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

اَرژنگ
دوشنبه 22 شهریور 1389, 08:58 صبح
ببینید من تو فرم دومم یک سری پارامتر هست که کاربر باید وارد کنه تا با استفاده از اونها جدولی در فرم 3 کشیده بشه حالا من بر اساس اون پارامترها باید موقعیت موس رو پیدا کنم که عملیاتش رو انجام دادم اما نمیدونم اینو چه جوری تو فرم 1 باید بشناسونم
حالا در مورد "اما نمیدونم اینو چه جوری تو فرم 1 باید بشناسونم" توضیح بدید، منظورتان از 'اینو' چیه؟ چی باید به فرم ۱ بره؟

matf2009
دوشنبه 22 شهریور 1389, 09:03 صبح
من میخوام موقعیت موس در فرم3 بر اساس جدولی که دارم رو در فرم 1 نشون بدم یعنی x,yموس همون x,yجدول باشه

اَرژنگ
دوشنبه 22 شهریور 1389, 12:00 عصر
من میخوام موقعیت موس در فرم3 بر اساس جدولی که دارم رو در فرم 1 نشون بدم یعنی x,yموس همون x,yجدول باشه
اگر مختصات را در همان فرم بتونید نشان بدید میشه به هر فرم دیگر فرستادشان.