سلام
میخوام مقدار وارد شده در تکست باکس فرم 2 به یک متغیر در فرم 1 تخصیص داده بشه.
(پاس دادن مقدار یک تکست باکس از یک فرم به یک متغیر در فرمی دیگر)
چطور میشه همچین کاری کرد؟(به زبان سی شارپ C#)
سلام
میخوام مقدار وارد شده در تکست باکس فرم 2 به یک متغیر در فرم 1 تخصیص داده بشه.
(پاس دادن مقدار یک تکست باکس از یک فرم به یک متغیر در فرمی دیگر)
چطور میشه همچین کاری کرد؟(به زبان سی شارپ C#)
سلام.
یه سر به تاپیک زیر بزن می فهمی چطوریه:
کد:http://forum.p30world.com/showthread.php?t=439083
اگر ممکنه بطور خلاصه روش کار رو اینجا بذارید چون اونجا هر کسی یه چیزی گفته.
اگه فقط کارتون همینه که می تونید Textbox هاتونو Public کنید ( یکی از مشخصه هاشو )
بعد
اینجوری
کد:form2 frm = new form2();
form2.textbox1.text = form1.textbox1.text
frm2.show();
شما یه Button و یه textbox توی فرم 1 بزار و کد زیر را به رویداد button1_Click اون بده
یه Button هم توی فرم 2 بزار و توی رویداد button1_Click کد زیر را بنویسکد:(new Form2()).Show();
کد:foreach (Form frm in Application.OpenForms)
{
if (frm is Form1)
{
Form1 f1 = (Form1)frm;
f1.textBox1.Text = "Ali";
}
}
this.Hide();
نقل قول:
ممنون اونوقت این کدی که نوشتید یعنی چی؟
در ضمن من نمیخوام در فرم 2 یک نمونه ی جدید از فرم 1 ایجاد بشه چون فرم 1 در ضمن اجرا یک نمونه ازش ایجاد میشه و میخوام مقدار وارد شده در تکست باکس فرم 2 با کلیک روی باتنی در فرم 2 به یک متغیر از فرم 1 که درحال اجرا میباشد ارسال بشه. اینی که شما نوشتی میاد یه نمونه از فرم 1 ایجاد میکنه و بعد مقدار رو به اون نمونه پاس میده.
سلام.
تا اونجایی که من میدونم که البته از دوستان گل همین تالار گفتگو یاد گرفتم، شما باید یه فرم بسازید از نوع فرمی که می خواهید ازش اطلاعات بردارید. بعد اطلاعاتش رو بردارید.
این کد باعث میشه برای هر نوع فرمی که الان بازه، فقط در آن واحد یه فرم ساخته بشه و بعد تو دور بعدی حلقه اون فرم پاک میشه و برای فرم بعدی ساخته میشه.کد:foreach (Form frm in Application.OpenForms)
تو کد بالا چک می کنیم که اگه فرم ساخته شده ( نمونه فرمی که الان باز هست ) اسمش form1 هست، با کد زیر:کد:if (frm is Form1)
یه شیئ از نوع فرم ازش بسازه و با کد زیر:کد:Form1 f1 = (Form1)frm;
تو تکست باکس اون فرم بنویسه: علی.کد:f1.textBox1.Text = "Ali";
البته اگه شما 100 تا فرم باز هم تو برنامه داشته باشید، این کد فقط در آن واحد یه فرم از اونا میسازه و بعد پاک میشه و سراغ فرم بعدی میره. پس رو سرعت برنامه خیلی تاثیر نمی زاره.
اگه سوالی بود بازم در خدمتیم.
همه راه هایی که دوستان در بالا اشاره کردند کم و بیش مشکل رو حل می کنند اما به نظر من راه بهتری هم هست.
بهتره واسه فرم دوم یک Property جدید تعریف کنیم و برای خواندن و ست کردن متغیر مورد نظر از آن استفاده کنیم. فرض کنیم می خواهیم متغیری از نوع رشته ای رو بین فرم ها پاس بدیم. در فرم دوم یک property یا خصوصیت جدید به نام NewProp تعریف می کنیم : قبلش یک متغیر رشته ای برای نگهداریش در ابتدای کلاس اعلان می کنیم
Private myProp as string
Property NewProp () as string
Get
Return myProp
End Get
Set (ByVal Value as string)
myProp=Value
Myvariable=Value
End property
حالا اگر نام فرم دوم را تایپ کنی و یک نقطه بذاری تا لیست تمامی خصوصیات و متدهاش بیاد مشاهده می کنی که خاصیت جدیدی به نام NewProp بهش اضافه شده. در سایر فرم ها مثلا در این جا فرم اول هم می تونی با دادن نام فرم دوم و این خصوصیت جدید اطلاعات جدیدی رو بهش پاس بدیform2.NewProp =XXXحال, هر موقع فرم دوم لود بشه مقدار خاصیت NewProp مساوی با مقدار XXX هست که می تونی باهاش کار کنی
خیلی کارا میشه کرد، راحترین کار شاید استفاده مقادیر یا فیلدهای Static باشه.
آره با استاتیکها میشه ، (قبلا این کار رو کرده بودم). یک روش دیگری هم بود به نام Cast کردن که بطور لایو متغیر رو از فرم 2 به فرم 1 درحال اجرا پاس میداد اما الان دقیقا یادم نیست چطوری بود؟!نقل قول:
راستی نمیشه فرم 2 طراحی نکرد ؟ حقیقتش مشکلم اینه که چون کنترل ها همشون در یک فرم جا نمیشن مجبور یک دکمه ی Edit بذارم تا کاربر توسط اون به فرم دیگری منتقل بشه و با وارد کردن عدد در تکست باکسهای فرم 2 ، مقدار متغیرهای فرم 1 رو تغییر بده . حالا نمیشه فرم 2 رو طراحی نکرد و کار راحت تری انجام داد ؟
تو کلاس فرمی که می خوایید اطلاعات رو در TextBox اون بریزید یه Property به صورت Public تعریف کنید و توقسمت Set اون مقدار value رو در textbox بریزید
البته این کار رو می تونید از طریق تابع سازنده فرم هم انجام بدید به این صورت که یه پارامتر String برای سازنده تعریف کنید و تو ایجاد کلاس مقداری رو که می خواید به اون پاس بدید
من روش اول رو توصیه می کنم چون قابلیت استفاده از اون در هرجای برنامه حتی بعد از ایجاد شی کلاس برات امکان پذیر هست
آره میشهنقل قول:
میشه فرم 2 طراحی نکرد ؟ حقیقتش مشکلم اینه که چون کنترل ها همشون در یک فرم جا نمیشن مجبور یک دکمه ی Edit بذارم تا کاربر توسط اون به فرم دیگری منتقل بشه و با وارد کردن عدد در تکست باکسهای فرم 2 ، مقدار متغیرهای فرم 1 رو تغییر بده . حالا نمیشه فرم 2 رو طراحی نکرد و کار راحت تری انجام داد ؟
دوتا کنترل panel به فرم اضافه کن کنترل های صفحه اول را روی یکی و کنترل های صفحه دوم را روی دیگری قرار بده ( البته اونی که مال صفحه دوم است در قسمت مشخصات مشخصه visible را برابر false قرار بدید .
حالا با زدن button به اسم edit به جای اینکه یه فرم جدید را باز کنی این کد را بنویس ( در کد زیر p1 صفحه اصلی و p2 صفحه ای که بعد از زدن button ی با نام edit می باشد )کد:p1.visibale=false;
p2.visible=true;
تایپیکی نبوده که این سوال را مطرح نکرده باشیننقل قول:
سلام
دوستان یک سوال دارم که مدتی هیچ کس نتونسته جواب بده!
من یک فرم دارم و یک کلاس هم ساختم
حالا کلیه اشیاء روی فرم(ادیت باکس و ...) رو میخوام فقط یک بار موقع تعریف کلاس پاس بدم و مجبور نشم هر موقع که متدی رو تعریف میکنم کله اشیاء رو پاس بدم؟؟؟
ممنونم
بیا روی این تایپیکنقل قول:
کد:http://forum.p30world.com/showthread.php?p=5995809#post5995809
سلام دوستان.
من دوصفحه خودندم با نتونستم متن يه text رو به فرم ديگه اي انتقال بدم.
كسي هست واضح تر بگه؟
اگر ممکن هست واضح تر سوالتون رو مطرح کنید.نقل قول:
توی فرم 2 باید بزنی form1.textbox1.text=form2.textbox1.text :دی به همین راحتی
منم همین سوالو دارم اما نمی دونم شما چه می گید البته من دوتا فرم دارم راه حل کاملی رو بنویسید با تشکر
کجای فرم 2 اینو بنویسیم
سلام.میشه توئ نوشتن این برنامه به من کمک کنید!!؟؟؟
یه برنامه کرنومتر که دو فرم داره.توی فرم اول کرنومتر فعال بشه وکارش رو شروع کنه ووقتی روی دکمه stop کیلیک کرد فرم جدیدی باز بشه که گزینه های resiom برای ادامه شمارش و abort برای exit و reset برای شروع شمارش از صفر بعد از زدن دکمه start در فرم اول.این 3 گزینه radio button هستند وباید بعد از زدن دکمه go on مقدارشون به فرم اول برگرده وتغییرات انجام بشه.