PDA

View Full Version : مشکل در نوشتن کلاس



neo1989021
شنبه 03 تیر 1391, 19:43 عصر
دوستان من تو پروژم یک فایل کلاس ایجاد کردم به اسم(Class1)
حالا دارم واسه قسمتی از برنامه تو اونجا کد می نویسم اما مشکل اینجاست مثلا تو فرم یکم
یک TextBox1 دارم
اما وقتی تو کلاس می خواهم TextBox1 رو بنویسم ارورر میده

ahmadreza517
شنبه 03 تیر 1391, 20:39 عصر
به نام تنها برنامه نویس هستی
سلام ,

فضای نام اضافه کنید.


using System.Windows.Forms;

neo1989021
شنبه 03 تیر 1391, 21:12 عصر
درست نشد
دوست عزیز
یعنی تو کلاس نمیشه به ابجکتهای توی یک فرم دسترسی داشت؟

saeedhushmand
شنبه 03 تیر 1391, 21:21 عصر
دوست عزیز شاید textbox فرمت public نیست
یا شایدم فرم صدا نمی زنی...
اگر textbox فرمت modifiers ش public نیست public کن بعد من یک نمونه کد کلاس با نام class1 در زیر گذاشتم ببین...


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Text
{
classClass1
{
publicvoid text()
{
MainWindow a = newMainWindow();
a.textBox1.Text = "سلام";
}
}
}

neo1989021
شنبه 03 تیر 1391, 22:25 عصر
دوست عزیز دقیقا از همین کاریکه گفتید استفاده کردم اما اون مقدار و تو textbox نمیریزه!

این کد و تو کلاس نوشتم:
public void text()
{
Channels a = new Channels();
a.textBox2.Text = "سلام";
}
و بعد رفتم اسم کلاس و نام این متد و فراخونی کردم:
Class1.text();

مرتضی تقدمی
شنبه 03 تیر 1391, 22:50 عصر
سلام
روش صحیح استفاده:


public string text()
{
return "salam";
}


هنگام صدا زدن:


class1 c = new class1()
textbox.text = c.text();


موفق باشید

saeedhushmand
شنبه 03 تیر 1391, 23:22 عصر
دوست عزیز به نظر من روش دوستمون آقای تقدمی درسته اما مشکل شما رو منم نمی دونم به خاطر کلاس هم نیست چون من کد زیر رو توی خود فرمم نوشتم اما بازم کار نکرد

MainWindow a = new MainWindow();
a.textBox1.Text = "0000000000000";

دوستان اگر کسی می دونه لطفا کمک کنه...

Mahmoud.Afrad
یک شنبه 04 تیر 1391, 01:54 صبح
دسترسی به اشیاء فرم ها از خارج اون بارها بحث شده.
میتونید از کد زیر استفاده کنید(به جای Form1 نام کلاس فرم و به جای "textBox1" نام تکست باکس رو بنویسید)
linq
var txt = (from t in Application.OpenForms["Form1"].Controls.OfType<TextBox>()
where t.Name == "textBox1"
select t).SingleOrDefault();
if (txt != null)
txt.Text = "your text";یا lambda expression (معادل کد بالا)
Application.OpenForms["Form1"].Controls.OfType<TextBox>().Any(txt =>
{
if (txt.Name == "textBox1")
{
txt.Text = "your text";
}
return true;
});یوزینگ System.Linq نیاز هست و اینکه تکست باکس غیرprivate باشه.

Y_Safaiee
یک شنبه 04 تیر 1391, 02:17 صبح
با سلام خدمت شما دوست گرامی

راحت ترین کد ممکن

اول سمپل کد کلاس تعریف شده توسط من


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms ;
namespace WindowsFormsApplication3
{
class Class2
{
public void settext(TextBox txt,Color bkcolor,Color forecolor,string DefaultText)
{
txt.BackColor = bkcolor;
txt.ForeColor = forecolor;
txt.Text = DefaultText;
}
}
}


حالا ارسال تکس باکس و اعمال تغییرات روی اون از هم فرمی در برنامه


private void Form1_Load(object sender, EventArgs e)
{
Class2 cclass = new Class2();
cclass.settext(textBox1, Color.Pink, Color.Black, "Hello World");

}




موفق باشی
بایت بایت

Mahmoud.Afrad
یک شنبه 04 تیر 1391, 02:29 صبح
آقای Youuness (http://barnamenevis.org/member.php?78417-Youuness) عزیز : فکر نمیکنم ایشون بخوان از داخل فرم این کار رو بکنند. تا اونجایی که من فهمیدم میخوان از یک کلاس دیگر (مثلا همین کلاس2) به اجزای داخل فرم دسترسی داشته باشند(عکس اینی که شما نوشتید).

Y_Safaiee
یک شنبه 04 تیر 1391, 03:01 صبح
با سلام مجدد خدمت شما

اینم کد دسترسی از کلاس به فرمتون و تغییر مشخصات شی های داخل فرمتون (مثه کاری که با CSS تو طراحی سایت انجام میدن)

*کد کلاس


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms ;
namespace WindowsFormsApplication3
{
class Class2
{
public void Config(Form frm,Type tpy)
{
foreach(Control ctrl in frm.Controls)
{
if (ctrl.GetType() == tpy) ctrl.Text = "salam man Younesam";
}
}
}
}



*کد فرم



private void Form1_Load(object sender, EventArgs e)
{
Class2 cclass = new Class2();
cclass.Config(this, typeof(TextBox));

}


ب همین راحتی

فقط لازمه تو قسمت ، typeof نوعشو مشخص کنی مثلا



typeof(TextBox)
typeof(Button)
typeof(GroupBox)
و ...


تغییر کل کنترلهام اگه میخوای انجام بدی تو کلاس بنویس


namespace WindowsFormsApplication3
{
class Class2
{
public void Config(Form frm)
{
foreach(Control ctrl in frm.Controls)
{
ctrl.ForeColor = Color.Blue;
}
}
}
}


موفق باشی
بایت بایت