ايران ويج

نسخه‌ی کامل: دسترسي به اطلاعات تكست يا كامبو باكي از كلاس
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام من ميخواستم از توي كلاسي كه تعريف كردم به مقدار موجود در تكست باكس دسترسي داشته باشم ؛ البته ميتونم به تكست دسترسي داشته باشم ولي وقتي از property get استفاده ميكنم براي دسترسي مقداري به من بر نميگردونه ولي از داخل خود فرم كه امتحان كردم مقدار رو دارم .اگر بتونيد كمكم كنيد ممنون ميشم. اگر اطلاعات يا مقاله اي در زمينه سي شارپ داريد كه به من براي بهتر شدن برنامه نويسي كمك كنه كه هميشه كه ميرم جمكران دعاتون ميكنم.

public string t1
{
get
{
return textBox1.Text;
}
set
{
t1 = textBox1.Text;
}
}
سلام.
اگه اشتباه نکنم باید قبل از اسم کنترل (TextBox1) اسم فرمت رو هم بنویسی. یعنی:
کد:
Form1.TextBox1.Text
یه امتحان کن شاید درست شد.
من این قطعه کدی رو که نوشتید رو وارد کردم ولی مشکل اینجاست که مقداری رو که property get برمیگردونه داخل خود فرم مقدار تکست باکس هست ولی وقتی مقدار property get رو از داخل کلاس فراخوانی میکنم مقدار تهی نشان داده میشود.
سلام.
توی سی شارپ رو دقیقا نمی دونم ولی توی وی بی وقتی می خواستیم از تو یه ماژول به مقدار یه تکست باکس دسترسی پیدا کنیم باید قبل از اسمش اسم فرم رو هم می نوشتیم.
شما هم به جای Form1، اسم فرمت رو بزار (تو خصوصیت Name فرمت ببین چی نوشته)، احتمالا نباید مشکلی داشته باشی.
مقدار تهی هم به خاطر این هست که نمی تونه آبجکتی که معرفی کردی رو پیدا کنه تا مقدارشو بهت برگردونه.
من هم قبل از سي شارپ با وي بي كارميكردم اينو ميدونم ولي تو سي شارپ فرق ميكنه بايد بايد از فرم يك شي بسازي و از شي استفاده كني ولي با اين حال كه به تكست باكسم دسترسي دارم ولي فقط مقدار داخل تكست باكسه كه از داخل كلاس بهش دسترسي ندارم
من داخل كلاس براي دسترسي به مقدار تكست اين كد رو نوشتم
string t1
form1 frm1=new form1
t1=frm1.textbox1.text
ولي باز هم جواب نداد.
اين كلاس براي بانك اطلاعاتي متد add رو انجام ميدهد و ميخواهم با دستورات sql يك فيلد جديد ايجاد كنم كه اطلاعاتش رو از تكست داخل فرم يك ميگيرد اينهم كدي است كه نوشتم
Form1 frm1 = new Form1();
string t1 = frm1.textBox1.Text;
SqlConnection cnn = new SqlConnection("server=localhost;database=tel;integrated security=true");
SqlDataAdapter da = new SqlDataAdapter("select * from tbltel", cnn);
DataSet ds = new DataSet();
cnn.Close();
cnn.Open();
SqlCommand mycmd = new SqlCommand();
mycmd.Connection = cnn;
mycmd.CommandText = "INSERT INTO tbltel(name,fax)VALUES(@name,@fax)";
//mycmd.Parameters.AddWithValue("@numkar", frm1.comboBox1.Items.Add);
mycmd.Parameters.AddWithValue("@name",frm1.textBox1.Text);
mycmd.Parameters.AddWithValue("@fax",frm1.textBox12.Text);

mycmd.ExecuteNonQuery();
cnn.Close();
سلام.
نقل قول: form1 frm1=new form1
این رو باید اینجوری بنویسی:
کد:
form1 frm1=Null;
frm1=new form1();
با استفاده از این دستورات و متغیر frm1 به کالکشن کنترل های فرم دسترسی پیدا می کنی.
فکر کنم باید از کنترل کالکشن برای دسترسی به کنترل ها استفاده کنی.
نمیدونم واقعا شما چند وقته با C# کار میکنید .
اما نکته ای که هست این است که در C# همه چیز object است و برای کار با Object ها در جهان واقعی باید ابتدا از آنها مدل ساخته شود و آن زمان با انها کار کرد و زمانی که شما یک شی را New میکنید در حقیقت از آن مدلی جدید میسازید ( یک محل جدید در Ram )
ابتدا توصیه میکنم مفهومی مانند Layering را شما مطالعه داشته باشید .
ولی اگر واقعا میخوای اونجوری کد تو بنویسی میتونی Text Box به صورت Static تعریف کنی تا بین تمام کلاس هات دارای یه مقدار باشه .
البته برات خیلی ساده گفتم . ولی واقعا تفاوت زیادی بین C# و Vb هست .
سلام.
فرمایش شما کاملا متین بوده و بنده مدت بسیار کمی است که در حال مطالعه #C هستم ولی مطلب فوق دقیقا چیزی است که در MSDN نقل شده و برای ساخت آبجکت فرم از این روش استفاده نموده است.
البته من خودم برای تست به صورت مستقیم از
کد:
form1 frm1=new form1();
استفاده کردم که پیغام خطا داد ولی زمانی که کد رو به
کد:
form1 frm1=Null;
frm1=new form1();
تغییر دادم درست شد. حالا چرا رو خودم هم نمی دونم.SadAmaze
البته من برنامه تخصصیم VB هست و با #C هم اصلا کار نکردم و فقط در حد مطالعه بوده است ولی از اینکه لطف کردی و توضیح دادی، متشکرم.
احتمال میدم scope متغیرتو بد تعریف کردی . مثلا یه همچین چیزی
form1 frm=new form1();
public form2()
{

}
که این صد در صد error میده .
ولی این درست است
public form2()
{
form1 frm=new form1();
}