سلام.
چجوری میتونم به یک combobox موجود در فرم دیگر دسترسی داشته باشم.
سلام.
چجوری میتونم به یک combobox موجود در فرم دیگر دسترسی داشته باشم.
کامبو باکس رو Public کن اونجوری میشه
باید خاصیت modifires اون کنترل رو public کنی
بعد توی فرم های دیگه که می خوای به اون دسترسی داشته باشی ، از اون فرم که یک instance گرفتی بعد می تونی به اون کنترل دسترسی داشته باشی
مثلا اسم فرمت Form1 هست و یک textbox داری که می خوای بهش دسترسی داشته باشی . بعد از اینکه modifires مربوط به textbox رو publicکردی این رو یک جای دیگه تو برنامه که لازم داری اینو مینویسی
Form1 frm = new Form1();
frm.textbox.text = "test";
:D همین
من همین کارو کردم ولی جواب نمیده خاصیت modifieمربوط به comboرو به حالت public درآوردم
form frm=new frmstatus();
ولی وقتی مینویسم frm. نام como که تو فرم status هست نمایش داده نمیشه.
درست شد در این صورت فقط میشه اون object رو مقدار دهی کرد من میخوام به مقداره درون combo دسترسی پیدا کنم که نمیشه.
کسی نمیدونه؟
من در form1 به combo یک مقدار میدم ودر form2 میخوام اون مقدارو نشون بدم
FrmStatus frm = new FrmStatus();
MessageBox.Show(frm.cmbDriver.Text);
شما به راحتی با دونستن نام شی مورد نظر می تونید بهش دسترسی داشته باشید بدون اینکه پابلیکش کنید
Form2 frm2 = new Form2();
(frm2.Controls["comboBox1"] as ComboBox).Text="Test";
(frm2.Controls["comboBox1"] as ComboBox).SelectedItem = (frm2.Controls["comboBox1"] as ComboBox).Items[2];
frm2.ShowDialog();
من هنوز نتونستم
تو کمبو فرم1 10 تا اسم وجود داره میخوام با باز کردن فرم 2 مقدار انتخاب شده در کمبو فرم1 رو نمایش بدم .در فرم 2 نمایش بدم
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin
سلام دوست عزیز
فرض کن شما تو فرم 1 یک CombpBox داری و می خوای با زدن Button اطلاعاتش ریخته بشه داخل CombpBoxای که در فرم 2 هستش
ابتدا در فرم 2 اینو بنویس
public Form2(string[] Text)
{
InitializeComponent();
comboBox1.Items.AddRange(Text);
}
حالا در فرم 1 بنویس
private void button1_Click(object sender, EventArgs e)
{
string[] arrcom =new string[comboBox1.Items.Count];
for (int i = 0; i < comboBox1.Items.Count; i++)
{
arrcom[i] = comboBox1.Items[i].ToString();
}
Form2 f2 = new Form2(arrcom);
f2.Show();
}
موفق باشی.
اگر فرم ۲ از قبل باز بوده باشه چی؟
حالا درست شد ؟
Form2 frm2 = new Form2();
frm2.Show();
foreach (Form frm in Application.OpenForms)
{
if (frm is Form2)
(frm).Controls["comboBox1"].Text = ":D";
}
فکر کنم بهترین روش همون ارسال رخداد باشه , درسته ؟
(Application.OpenForms["yourOpenFormName"] as YourOpenFormClassName).Controls["YourComboboxName"] as ComboBox
با این فرض که اسم کلاس فرم دوم YourOpenFormClassName و مقدار Name اش YourOpenFormName است.
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin
این رو تست کرده بودم . فقط فرم اول باز شده از نوع فرم2 رو مقدارش را تغییر میده
تست کنید
Form2 frm2 = new Form2();
frm2.Name = "frmTest";
frm2.Show();
((Application.OpenForms["frmTest"] as Form2).Controls["comboBox1"] as ComboBox).Text = ":d";
البته من از روش delegate و event استفاده می کنم
روش مورد استفاده من برای انجام چنین کاری :
1- تعریف کلاس زیر :
public class MoveObjectEventArgs : EventArgs
{
/// <summary>
///
/// </summary>
/// <param name="obj">موضوع ارسالی</param>
public MoveObjectEventArgs(object obj)
{
_object = obj;
}
/// <summary>
/// شی مورد انتقال
/// </summary>
private object _object;
/// <summary>
/// شی ذخیره شده را بر می گرداند
/// </summary>
public object GetObject
{
get { return _object; }
}
}
2- تعریف یک رخداد و صدا زدن آن در فرم فرستنده :
public delegate void _SendObject(object sender, MoveObjectEventArgs e);
public event _SendObject SendObject;
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Name = "frmTest";
if (SendObject != null)
SendObject(this, new MoveObjectEventArgs(":D"));
frm2.Show();
3- انجام تغییرات در فرم گیرنده :
public Form2()
{
InitializeComponent();
(Application.OpenForms["Form1"] as Form1).SendObject += getObject;
}
private void getObject(object sender, MoveObjectEventArgs e)
{
comboBox1.Text = (e.GetObject as string);
}
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin
محدودیت اول: حتما باید یک instance جدید از فرم مورد نظر بسازید تا بتونین داده مورد نظرتون رو ارسال کنید بهش. اگر قبلا یک instance از فرم مورد نظر وجود داشته باشه آیا بدون اینکه یک instance جدید ازش بسازید میتونین از این روش استفاده کنید؟
محدودیت دوم: آیا برای ارسال هر نوع داده ای قراره یک overload جدا برای سازنده ایجاد بشه؟
محدودیت سوم: آیا برای ارسال داده به هر کنترل در فرم مقصد باید یک overload جدید برای سازنده ایجاد بشه؟
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin
حالا من منظور شما رو درست نگرفتم
یعنی چی؟این روش شما هنوز مشکل این که اگر فرم هدف در حال حاضر باز باشه رو حل نکرده
اصلا" تستش کردید ؟
هر تعداد که میخواد از فرم هدف باز باشه بازم جواب میده ( تست کردم )
فکر کنم اگر تستش کنید متوجه بشیددر ضمن این روش به نظر شما چه مزیتی نسبت به ارسال داده از طریق سازنده داره که در پست های قبلی ارسال شده بود؟
ببینید تا جایی که من متوجه شدم توی حالت ارسال داده باید چک می کردیم که آیا داده ارسال شده یا خیر , فرستنده و گیرنده کدومند که توی حالت پویا یک کمی سخت میشد
البته من هم تازه از این روش استفاده می کنم ولی به نظرم خیلی قدرت مانورش به روش های دیگه بیشتره مثل همین که میدونیم فرستنده داده کدوم شی ئه
قفل مخفی تلگرام، واتس اپ و همه برنامه ها - قفل حرفه ای برای دستگاه اندرویدی شما - با امکان مخفی شدن و جلوگیری از Unisntall شدن
--آموزش ایجاد برنامه های چند زبانه در WPF
-BeRMOoDA File Encrypter-open source-using WPF, C# and MVVM Pattern
-نمونه برنامه ساده و کامل با الگوی MVVM برای کار با دیتابیس با استفاده از Entity Framework در WPF
-WPFMessageBox فارسی/انگلیسی - با قابلیت تغییر Skin