میخوام بین کنترلها توی فرمهای مختلف ارتباط برقرار کنم.مثلا چطوری میتونم محتویات یه textbox در یه فرم رو در یه textbox توی یه فرم دیگه چاپ کنم.
لطفا راهنمایی کنید.متشکرم.
میخوام بین کنترلها توی فرمهای مختلف ارتباط برقرار کنم.مثلا چطوری میتونم محتویات یه textbox در یه فرم رو در یه textbox توی یه فرم دیگه چاپ کنم.
لطفا راهنمایی کنید.متشکرم.
با سلام
اصلا نیازی به استفاده از بانک نیست. شما میخواهید فرم شما یک یا چند پارامتر را به فرم بعدی پاس کند برای این کار باید Constructor فرم دوم تغییر یابد و پارامتر بگیرد. constructor یک فرم یک متد Public می باشد که هم نام فرم میباشد. درون آن InitializeComponent هم فراخوانی می گردد.بجای دو پرانتز خالی باید نوع و پارامتری که می خواهید به فرم مورد نظر pass شود را مشخص کنید. سپس مقادیر را درون متد به متغییرهای عمومی که درون فرم تعریف کردید نسبت دهید تا همه جا بتونی از اونها استفاده کنی بعنوان مثال فرض کنید من بخواهم یک پارامتر string را به فرم دوم بفرستم. بنابراین در constructor فرم 2 می نویسم
private string test="";
public Form2(string p_test)
{
//
// Required for Windows Form Designer support
//
test=p_test;
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
حال هنگام فراخوانی فرم دوم باید پارامتر به آن پاس شود:
form2 frm_2=new form2("عبارتی که می خواهید پاس شود");
frm_2.showdialog();
سلام،
میدونم سوال تکراریه ولی تو جوابها هنوز روش مشخصی ارائه نشده
تو فرم یه grid وجود داره که وقتی سطری انتخاب میشه با زدن کلیدی یه فرم جدید باز میشه و اطلاعات کاملتر او سطر رو تو فرم باز شده جدید نشون میده حالا چطوری مقدار کلید ردیف grid انتخابی رو به فرم جدید پاس کنم
در کلاس مربوط به فرم دوم ات یک متغیر تعریف کن و در فرم اول قبل از تشکیل شیء نمونه از کلاس فرم دوم جهت نمایش بر روی مونیتور ، مقدار این متغیر رو نیز Set کن!نوشته شده توسط hmm
modifyers اون شئی رو public کن (درون property حل می شه
سازندۀ فرم دوم رو طوری تغییر بده که یک متغیر (از هر نوعی که میخوای) رو به عنوان پارامتر بگیره ، بعد در هنگام ایجاد یک شی جدید از فرم دوم ، اون مقداری رو که میخوای انتقال بدی ، به عنوان پارامتر سازنده منتقل کن.
We work in the dark, we do what we can, we give what we have.
Our doubt is our passion and our passion is our task.
The rest is the madness of art
نوشته شده توسط mehdi311gggاینجاست که ترجمه متون بلاد بیگانه کمر برنامه نویس رو میشکنه!نوشته شده توسط mehranFX
دوستان اگه میتونن یک خط کدش رو بنویسن
البته لطف میکنن
حاجی ، من از جایی ترجمه نکردم ، فکر کردم انقدر برنامه نویسی بلدی که با یه نیش نکته ، خودت تا آخرش رو بخونی.
این sample رو دانلود کن ، با کلیک روی button1 ، اطلاعات ردیف انتخاب شده به فرم دوم منتقل میشه ، حالا اونجا دست خودته که چیکار می کنی باهاش.
(من به عنوان مثال Text فرم دوم رو مساوی کلید اصلی اون ردیف انتخاب شده قرار دادم)
آخرین ویرایش به وسیله Mehdi Asgari : شنبه 10 اسفند 1387 در 13:54 عصر
We work in the dark, we do what we can, we give what we have.
Our doubt is our passion and our passion is our task.
The rest is the madness of art
سلام؛
ببین "سید" سوالی کردم جوابش رو دادی ازت ممنونم ولی...
لازم نیست تعداد پروژه های که با دات نت نوشتم رو بگم ولی میتونی به پاسخ حقیر که به سوالات بعضی از دوستان دادم توجه کنی
جواب این سوالات رو سالها قبل از العان میدونستم!
ولی هدف من از طرح این سوال و این سوال و این سوال این بود که بدونم چقدر افراد این بخش تونستن مفاهیم ابتدایی دات نت رو بفهمند و اگه عمری بود تا آخر ماه یه جمع بندی کلی خدمت اعضا میدم .
بهرحال سعی کن یا لطف کنی و به سوالات بقیه با کمال ادب جواب بدی یا لطف کن و اصلا جواب نده!
واژه های بکار گرفته توسط شما و بیشتر mehranFX جوبه ولی بدرد کسی که اول راه دات نته نمیخوره خواستم تو پست قبلیم اینو بصورت غیر مشهود بگم که این شیوه پاسخ برای هم رده ها خوبه نه برای مبتدیها !
بهرحال از پاسخت ممنون
آخرین ویرایش به وسیله hmm : شنبه 13 اسفند 1384 در 07:51 صبح
باید یه grid تعریف کنی و اون رو تبدیل به پراپرتی کنی و با استفاده از اون ارتباط برقرار کنی راه دوم که البته خودم هم مطمئن نیستم اینکه متد رو Static تعریف کنی .
همون طور كه يكي از دوستان گفته بود با static كردن متغيير
يه نمونه گذاشتم
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
آقاي كياني
ممنون از راهنمايي شما
ولي وقتي من مطابق راهنمايي شما عمل مي كنم از فرم نخست هيچكدام از پراپرتي هاي فرم 2 را نمي بينم
Form GetD = new FrmCPSelector(MyCP_ConnectionString_str,
"SELECT ORG_ID, ORG_NAME, ACTIVE_FL FROM ORG WHERE ACTIVE_FL = 'Y' ",
"org",
"Select Organization", 2,
"ID", "ORG_ID", "Organization", "ORG_NAME", 1, true);
if (GetD.ShowDialog() == DialogResult.OK)
{
Organization_ID = GetD.NewVal1Id
Organization_title_ID = GetD.NewVal2_Id;
}
متغيرهاي فرم 2
String NewVal1_str = String.Empty;
String NewVal2_str = String.Empty;
خاصيت هاي فرم 2
publicString NewVal1_Id
{
set { NewVal1_str = value; }
get { return NewVal1_str; }
}
publicString NewVal2_Id
{
set { NewVal2_str = value; }
get { return NewVal2_str; }
}
همانطور كه در تصوير پيوست ملاحظه مي فرماييد خاصيت ها در ليست نيستند ممكن است راهنمايي بفرماييد
آخرین ویرایش به وسیله Mahmoud.Afrad : جمعه 08 مرداد 1395 در 01:56 صبح
سلام من میخواستم بدونم که چطوری بدون استفاده از متد show() یک مقدار را به فرم دوم میفرستید و چطوری فرم را نمایش میدهید؟
سلام
یه مثال خیلی ساده برات گذاشتم . امیدوارم منظورت همین باشه .
ببخشید اگر این سوال کمی تکراری است ولی من هنوز جواب مشخصی برای آن پیدا نکردم
فرض؟ فرم١ در ابتدای برنامه اجرا میشود و فرمهای٢و٣ توسط فرم١ باز میشوند و مسلما فرم١ به فرمهای٢و٣ دسترسی دارد
سوال؟ فرم٢ چگونه میتواند به فرمهای١و٣ دسترسی داشته باشد
staticvoid Main()
{
Application.Run(newForm1());
}
privatevoid Form1_Load(object sender, EventArgs e)
{
Form2 form2 = newForm2();
Form3 form3 = newForm3();
form2.Show();
form3.Show();
}
آخرین ویرایش به وسیله mahani : جمعه 20 مرداد 1385 در 16:40 عصر
publicstatic Form1 MainForm;
staticvoid Main()
{
MainForm = new Form1();
Application.Run(MainForm);
}
...(anywehere) [Namespace].MainForm.TextBox1.Text...
ابتدا یک کلاس به برنامه اضافه می کنید مثلا به نام myConfig بعدش فرض کنید در برنامتون 100 تا فرم دارید که می خواهید از آخری به اولی و از اولی به آخری پارامتر پاس کنید یا هر کاری که دلتون خواست را انجام بدید مثلا از فرم آخری فرم اولی را مینیمایز کنید.
حال داخل کلاسی که ساختید به تعداد فرم هاتون متغیری استاتیک از نوع آن فرم بسازید به شکل زیر
public static f1 Form1;
و برای فرم های بعدی هم به همین صورت مثلا
public static f100 Form100;
حالا هرجا خواستید یکی از فرم ها را از داخل یه فرم دیگه ظاهر کنید کد زیر را بنویسید
مثلا
Config.f1 = new Form1();
Config.f1.Show();
حالا فرض کنید می خواهید از فرم آخری فرم اولی یا وسطی را رنگش را عوض کنید خوب خیلی راحته به شکل زیر عمل کنید
Config.f1.BackColor=Red;
دقت کنید اگه می خواهید به اشیائ درون خود فرم ها هم دسترسی داشته باشد باید خاصیت modifiers
آنها را به حالت public درآورید
امید وارم این مطلب براتون جالب باشه
موفق و پیروز باشید.
به به !
میشه بگید چه لزومی داره به همه فرم ها اون هم اینطوری دسترسی داشته باشیم ؟
البته ارتباط بین فرم ها حتما لازمه ، ولی این طوری که همون برنامه نویسی Modular بهتر بود دیگه چه نیازی به OOP بود، شاید بهتر بود به ازای همه کلاس های دات نت فریمورک متغییر استاتیک تعریف میکردند ،بعدش این new رو حذف می کردن تا ملت این همه عذاب نکشن ؟
اگر در طراحی فرم ها و وظیفه هر کدام در زمان طراحی دقت کرده باشید ارتباط بین فرم ها به حداقل میرسه (یعنی کلاس ها تا حد ممکن مستقل از هم باشند)و برای اون حداقل هم نیازی به این کارها نیست.
**** دوست عزیز، لطفا با مزاح کردن به دیگران بی احرامی نکنید. ممنون ****
ببینم اونوقت میشه بگین private و protect و امثال اینا که برای اعمال کپسوله سازی کد ها(encapsulation) هستند به چه درد می خوره؟
اسفاده از static خیلی خوبه ولی نه برای یک همچین کاری عزیز
البته اشکالی نداره خوب فروم به همین درد میخوره که ادم اشکالاتش برطرف بشه
موفق باشید
مهدی کیانی
آخرین ویرایش به وسیله omid_Ahmadi : چهارشنبه 02 خرداد 1386 در 17:56 عصر
بسم رب العشق
این روش برای این خوبه که شما در روش های عادی مجبورید وقتی می خواهید مثلا از
فرم دوم که بوسیله فرم اول ایجاد شده رنگ تکست باکس فرم اول را تغییر بدید نمی تونید.
----------------------------------------------------------------------------------------------
روش owner و دیگر روش های دیگه هم هست ولی این خیلی راحت تره.
----------------------------------------------------------------------------------------------
در ضمن استاتیک تعریف شده که نیاز نداشته باشیم از کلاس new بسازیم.
----------------------------------------------------------------------------------------------
اما با این روش تمام فرمهای برنامه بصورت سیال در میاند و هر کاری که خواستید می تونید
بین آنها انجام بدید , راستی اگه بازم دیدید این روش به دردتون نمی خوره یه روش راحتر از این
بیان کنید همه استفاده می کنیم
----------------------------------------------------------------------------------------------
اینجا اومدیم یاد بگیریم
و آقای کیانی عزیز من قصد مزاح و بی احترامی به کسی را ندارم
یا علی
اصلا بحث به درد بخور بودن و راحتی این روش نیست، بحث سر اینه که این روش شما بسیاری از مطالبی که در برنامه نویسی شی گرا وجود دارد را نقض می کند!
یعنی قوانینی که در OOP در نهایت به سود برنامه نویس هستند در این روش نادیده گرفته میشن !
در OOP هر کلاس به عنوان یک جعبه سیاه در نظر گرفته میشه که از طریق پارامترها ومتد ها با خارج ارتباط داره نه از طریق در اختیار قرار دادن اعضای داخلیش به طور مستقیم(public)!
در ضمن Owner با این روش هیچ ربطی با هم ندارند ، Owner صرفا یک ارجاع به شی پدر هستش ،ولی این طوری شما یک شی جدید ایجاد میکنید.
این روش ممکنه کار راه بنداز باشه ولی صحیح نیست!
@ hamid_isf_1360:
روش شما همونطور که دوستان گفتن، با اصول شیئ گرایی تناقض زیادی داره. روش کم و بیش واضحه (البته نقص هایی هم داره)، اما مشخص نیست که در چه شرایطی قرار گرفتید که به استفاده از این روش رسیدید. اما هر چی هست، مشخصه که قسمتی از طراحی مشکل داشته، می تونید حالتی رو که به این روش رسیدید بگید تا دوستان اون رو بررسی کنن.
موفق باشید.
تقریباً در هیچ پستی از این تاپیک این مورد نقض نشده، فقط چون همه افرادی که نظر دادن، مخالف بودن، این حس ایجاد شده که اون فرد داره تحقیر میشه. پس بهتره دیگه در این مورد صحبت نشه.هر برنامه نویس برای نوشتن برنامه هاش از روش هایی که ممکن منحصر به خودش باشه استفاده می کنه و تا زمانی که این روش ها Bug ای در برنامش ایجاد نکرده حتی اگه قوانین OOP رو هم نقض کنه نمیشه به فکر اون برنامه نویس ایراد گرفت ...
پس سعی کنید یه ذره با هم مهربون تر باشید و اگر هم می خواهید انتقادی بکنید طوری اینکار رو نکنید که طرف یک سپر و شمشیر بگیره دستش از خودش دفاع کنه می تونید از ادبیات بهتری برای اینکار استفاده کنید تا اون طرف هم از پستتون در جهت ارتقا, سطح علمیش استفاده کنه ...
این روش فقط برای افرادی که در حال یادگیری هستن، می تونه مفید باشه تا مزایا و معایب اون رو بررسی کنن. همین. ولی در هیچ برنامه واقعی استفاده از اون نمی تونه مفید باشه (البته با توجه به توصیحات اندکی که راجع به اون گفته شده).در ضمن این روشی که ایشون مطرح کردن برای برنامه نویسان مبتدی و کسانی که با OOP آشنایی زیادی ندارن بسیار مفیده
سلام به همه عزیزان و عرض تسلیت مجدد به مناسبت این ایام
چند روز پیش تاپیکی با عنوان کنترل کردن فرم ها و آبجکت ها توسط یکدیگر و دسترسی آن ها به هم در اینجا مطرح شد. که من کمی توضیح در این باره داده بودم (در پست 11)
قرار بود که مطالب را کامل کنم و در قالب یک مقاله در اختیار دوستان قرار بدهم. اما چون فرصت نداشتم، قصد داشتم این موضوع را و چند مقاله دیگر از جمله ادامه MVC و ... را حداقل تا بعد از امتحان ارشد به تعویق بیاندازم. اما با توجه سیل عظیم ایمیل ها و درخواست ها مبنی بر کامل کردن این موضوع، امروز مجبور شدم یکمی از وقتم را به این موضوع اختصاص بدم
مقاله ای هر چند ناقص به هکراه چند مثال تهیه کردم که امیدوارم دوستان بهره کافی ازش بتونن ببرن
چون خیلی سریع مجبور شدم مقاله را تایپ کنم، غلط املایی و اشتباهات لپی زیادی ممکن است در مقاله به چشم بخورد که از این بابت پوزش می طلبم
دوستان دقت کنند که در نوشتن مثال ها وسواس به خرج ندادم. مثلا استفاده نکردن از توضیحات کافی و خیلی موارد دیگه...اون هم فقط و فقط به دلیل کمبود وقت
الانم خفن دیرم شده ...باید برم سر قرار (چیه بابا این قرار از نوع خوبشه..چرا تهمت الکی میزنین )که اگه نرم کلمو می کنن
اسم درست فایل Attach شده هم باید Objectsrelation (ارتباط آبجکت ها)باشه که اشتباها ObjectRelations (ارتباط های آبجکت) نوشته شده
یه نتکته ای هم در مورد مثال آخر دارم که چون الان فرصت نیست، اومدم می گم چیه
کوچیک همه شما
کیانی
آخرین ویرایش به وسیله Mahdi.Kiani : دوشنبه 23 اردیبهشت 1387 در 12:52 عصر
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
سلام. اول بگم که خیلی عالی بود . اگه میشد یه بار دیگه تشکر می کردم. انشااله امتحان فوق رو هردومون خوب بدیم.
حالا یه سوال دارم . توی حالت دوم یعنی ارسال از فرم دوم به فرم اول ، فرم دوم رو showdialog می کنم اما نمی خوام از هیچ دکمه ای توی فرم دوم استفاده کنم. واضحتر بگم : وقتی از فرم اول روی یه textbox کلیک کردم واسم یه لیست توی فرم دیگه باز میشه که showdialog کردم. با کلیک روی هر کدوم از آیتمهای لیست می خوام لیست بسته بشه و آیتم مورد نظرم به textbox از فرم اول اضافه بشه حالا باید چیکار کنم؟
سلام
خواهش می کنم
فکر کنم شما می خواین یه کاری شبیه به کاری که نرم افزار هلو انجام داده (برای انتخاب از لیست) انجام بدین
دقت کنید که برای dialog کردن فرم حتما نیاز نیست که دکمه ای با خاصیت dialogResult داشته باشین
شما می تونین به طور دستی مقدار dialogresult را برای فرم تنظیم کنید مانند کدی زیر
this.DialogResult = DialogResult.OK;
کنترل برنامه وقتی به خط فوق برسه فرم را اتوماتیک می بنده
نکته دیگه اینکه برای باز کردن فرم مربوط به لیست داده ها، استفاده از رویداد کلیک برای textbox جالب به نظر نمی رسه .معمولا یه shoertcut مثل F2 و ... تنظیم می کنند یا اینکه بعضا در رویداد KeyPreess یا keydown مربوط به textbox ، فرم لیست داده ها را show می کنند
به نظر من استفاده ازF2 و نظیر آن بهتر است
دو نمونه برنامه براتون میفرستم. برای نمونه ببینید ولی بهینه کردنش با خودتون
اولی بدون استفاده از dialogresult و دومی با استفاده از dialogrsult
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
اینقدر آقای کیانی لطف کرده بود که نتونستم فقط رو دکمه تشکر کلیک کنم . آقا واقعا دستتون درد نکنه . در پناه حق موفق باشید
سلام به همه دوستان
یه سوال داشتم که نمیدونم به این بخش مربوط میشه یا نه
میخوام یه چیزی شبیه Subform توی فرم اصلی ایجاد کنم ، چطور میشه
مثلا فرض کنید فرم اول شامل اطلاعات یه فرد باشه و فرم زیر مجموعه یا Subform شامل اطلاعات تحت تکفل این فرد باشه با یه جستجو ، یه چیزی شبیه اکسس