PDA

View Full Version : دستکاری داخل کد Designer.cs



Mojgan110
یک شنبه 10 دی 1385, 21:55 عصر
فرض کنید یک کلاس جدید از TextBox مشتق کرده باشم و حالا بخواهم یکی دوتا TextBox های فرمم ، از این کلاس جدید ساخته شوند.

وقتی تکست باکس را از قسمت ToolBox به فرمم اضافه میکنم ، خودبخود از Forms.TextBox ساخته میشه و اگر من اون را دستکاری کنم و مثلا بنویسم از Forms.MyPersonalTextBox مشتق بشو ، چنین کلاسی را نمیشناسه و خطا میگیره.

واسه همین مجبور میشوم که تکست باکس را در زمان اجرا بسازم که بتونم ازهرچی دلم خواست مشتقش کنم .

برای اینکه بشه به روش اول یعنی دستکاری داخل Form1.Designer.cs این کار را انجام داد ، راهی هست ؟

( البته در حد همین وراثت و اینا ، وگرنه خب کامپوننت که میشه ساخت و ... که حالا زوده ! من بلد نیستم ! )

عفت بزرگه
یک شنبه 10 دی 1385, 22:17 عصر
امیدوارم این چند خط که با وجود شدت مشغله تهیه گردید . بدرد بخوره

omid_Ahmadi
یک شنبه 10 دی 1385, 22:20 عصر
سوالت واضح نیست. یعنی یه کلاس جدید برای TextBox ایجاد می کنی و اون رو از TextBox اصلی مشتق می کنی، بعد می خوای یه آبجکت از اون بسازی و توی فرم قرار بدی؟

Mojgan110
دوشنبه 11 دی 1385, 08:51 صبح
سوالت واضح نیست. یعنی یه کلاس جدید برای TextBox ایجاد می کنی و اون رو از TextBox اصلی مشتق می کنی

تا اینجاش : بله


بعد می خوای یه آبجکت از اون بسازی و توی فرم قرار بدی؟
نه ! اینطوری را میتونم.
آخه من اسم علمیش ! را نمیدونم ولی منظورم همون فایلی هست که برای یک فرم ساخته میشه ، همونجا که InitializeComponent داره . اسمش را مینیوسه Form1.Designer.cs . خب ؟ وقتی مثلا یک تکست باکس به فرم اضافه میکنیم ، بطور خودکار توی اون فایل هم این تسکت باکسه و اطلاعاتش میاد دیگه . بعد خب تکست باکس را از System,Windows.Forms.TextBox میسازه که قابل قبوله ! ولی من میگم حالا که یک کلاس جدید واسه تکست باکس در پروژه ام ساخته ام ، آیا میشه توی همون فایل ، بجای System.Windows.Forms.Text بنویسم که System.Windows.Forms.MyPersonalClass ؟ چون ایراد میگیره !
حالا میخواستم بببینم که میشه چنین کاری کرد ؟ یا اینکه مجبوریم تکست باکس را ران تایم بسازیم ؟

/ البته تا زمان پست کردن این مطلب ، مثال آقای (...!) را مطالعه نکردم . الان میخونمش شاید مشکل حل بشه .
مرسی

عفت بزرگه
دوشنبه 11 دی 1385, 09:05 صبح
شما با این روش دیگر یک آبجکت درون toolbox خواهید داشت . دیگه مثل تکست باکس عادی باهاش کار کنید . اگر بازم مشگلی بود بهمون بگید

rasoul_ras
سه شنبه 12 دی 1385, 17:54 عصر
////////////////////////////////// InitializeComponent /////////////////////////////////////
private System.Windows.Forms.CustomTextBox cTextBox;
this.textBox1 = new System.Windows.Forms.TextBox();
this.cTextBox.Location = new System.Drawing.Point(198, 161);
this.cTextBox.Name = "cTextBox";
this.cTextBox.Size = new System.Drawing.Size(100, 20);
this.cTextBox.TabIndex = 0;
this.Controls.Add(this.cTextBox);
////////////////////////////////// Custom Text Box /////////////////////////////////////
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace Test
{
class CustomTextBox:TextBox
{
protected override void OnKeyPress(KeyPressEventArgs e)
{
if (char.IsLetter(e.KeyChar))
{
e.Handled = true;
}
base.OnKeyPress(e);
}
}
}