سی شارپ : دسترسی به کنترل های دیگر فرم ها در فرم 1

بازدید122.9kپست ها3آخرین فعالیت11 سال پیش
0
0

سلام
من 5تا فرم دارم که میخوام از TextBox های فرم های 2 و 3 و 4 در فرم یک استفاده کنم
من توی فرم 1 یک سوکت تعریف کردم و الآن نیاز دارم که از TextBox های دیگه ای که توی فرم های 2 و 3 و 4 هست استفاده کنم
در vb6 مثلا اگه میخواستی از کنترل TextBox که در فرم مثلا 2 هست توی فرم 1 استفاده کنی از این دستور استفاده میشه :
Form2.Textbox1.Text
یا برعکس اگه بخواستی از چیز های 2 و 1 همزمان استفاده کنی ، فقط باید اول نام اون فرم رو اول مینوشتی و با خیال راحت کد نویسی میکردی ، اما توی سی شارپ اینجوری نیست ، لطفا یکی راهنمایی کنه یا سورس بده

ممنون

0

سلام
اگر بخواید کنترلهای فرم تو فرم های دیگه دیده بشن باید اول اون رو انتخاب کرده و از منوی Peroperties گزینه Modifiers رو روی public بذارید.

بعد باید یه instance از کلاس form2 یا فرمهای دیگه تو فرم اول بسازید تا به کنترل های پابلیک شده اون فرم دسترسی داشته باشید
[CSHARP]Form2 frm2 = new Form2();[/CSHARP]

برای نمایش دادن فرم:
[CSHARP]frm2.Show();[/CSHARP]

برای تغییر مثلا متن کنترل:
[CSHARP]frm2.textBox1.Text = "Modified";[/CSHARP]

کد کامل(فرم 1):
[CSHARP]namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Form2 frm2 = new Form2();
public Form1()
{
InitializeComponent();
}

    private void button1_Click(object sender, EventArgs e)
    {
        frm2.textBox1.Text = "Modified";
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        frm2.Show();
    }
}

}[/CSHARP]

0

سلام من نگفتم میخوام مثلا txtbox1 که در فرم 2 هست توی فرم 1 نمایش داده بشه ، من میخوام ازش توی سوکت نویسی استفاده کنم ، سوکتمو توی فرم 1 تعریف کردم و فرم 2 ( مربوط به چت شخصی میباشد) میخوام اگه یکی اومد pv درجا بره پیامش در اونجا نمایش داده بشه
این کدی هست که برای نمایش چت شخصی استفاده میشود که در فرم 1 و در Void پیام ها باید نوشت :
[CSHARP]
else if (msg.Type == MessageType.chat)
{
formpvchat.DefaultInstance.Text = msg.From.User + "@" + msg.From.Server + "/" + msg.From.Resource;
formpvchat.DefaultInstance.chatscren.AppendText(frmchat.DefaultInstance.Text + " : " + msg.Body + Environment.NewLine);
formpvchat.DefaultInstance.Show();
}
[/CSHARP]

در فرم چت این کنترل ها قرار دارند
chatscren [richtextbox
pm [textbox
Button1

pm.text برای نوشتن پیام ها
Chatscren.text برای نمایش خواندن و ارسال کردن پیام ها
Button1 هم برای ارسال پیام نوشته شده در pm.text هست و کدش به این صورته :

[CSHARP]
try
{
pashmak_chat.Form1.x.Send("<message to='" + this.Text + "' type='chat'><body>" + this.pm.Text + "</body></message>");
chatscren.AppendText(Form1.DefaultInstance.usr.Text + " : " + pm.Text + Environment.NewLine);
pm.Clear();
}
catch (Exception ex)
{
}
[/CSHARP]

حالا من میخوام با استفاده از سوکت فرم 1 ، یک آیدی دیگه با فرم 3 آنلاین کنم دستور آنلاین کردن در خود فرم 1 به این صورته :
[CSHARP]
x.Server = "chat.lianchat.ir";
x.Open(txtid.Text, txtpw.Text, txtres.Text);
[/CSHARP]

البته کدهای دیگه برای ساخت Void های رمز اشتباه ، dc شدن یا آنلاین شدن هم هست اما دیگه من ننوشتم

در vb6 کد بالا رو اگه بخواستی توی فرم 3 استفاده کنی که دقیقا همین اسم ها هم داشت ، از این کد استفاده میکردید :
[CSHARP]
Form1.x.Server = "chat.lianchat.ir
Form1.x.Open(Form3.txtid.Text, Form3.txtpw.Text, Form3.txtres.Text)
[/CSHARP]

البته من به صورت مثال گفتم در اصل این کد روی vb6 کار نمیکنه

ممنون

0

دوست عزیز منظور از دیده شدن این نیست که Textbox فرم2 در فرم 1 نمایش داده بشه منظور اینه که بشه به کنترل های فرمهای دیگه دسترسی داشته باشیم مثلا متن داخل textbox که توی فرم2 هست رو از فرم از تغییر بدیم یعنی دقیقا معادل همون کد Form2.Textbox1.Text تو ویژوال بیسیک هست.

سوال برنامه نویسی دارید؟

ندونستن عیب نیست، نپرسیدن چرا!

خوش آمدید

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