PDA

View Full Version : سوال: اضافه کردن ایتم به صورت کد در داخل فرم



hercool
چهارشنبه 16 مرداد 1392, 11:04 صبح
سلام دوستان
یه سوال دارم در رابطه با ایجاد یک ایتم به فرم توسط کد
برای مثال من می خوام یک تکست باکس تو فرمم ایجاد کنم اما نه از طریق محیط ویژوال می خوام از طریق کد این کار رو کنم چند راه رو رفتم اما در فرم تکست باکسی که میسازم نمایش داده نمیشه نمی دونم چرا
برای وب می شه از دستور controls.add استفاده کرد اما در winforms این گزینه رو نداریم show هم میزنم نمیشه
کد ها
private void button1_Click(object sender, EventArgs e)
{
TextBox txt = new TextBox();
// txt.ID = "textBox1";
txt.Text = "helloo";
// form1.Control.Add(txt);
txt.Name = "ss";
txt.Show();
}
TextBox text = new TextBox();
text.Size = new System.Drawing.Size(100, 20);
text.Location = new Point(367, 31);
text.Name = "akhbar";
// text.Controls.Add(text);
text.Show();

ولی می بینید که برای خود text باکس قابلیت اضافه کردن یک ایتم وجود داره مثلا می تونم پنل بزارم و تکست باکس ها رو بهش اضافه کنم اما می خوام به فرم اضافه بشه
راه اضافه کردن به خود فرم رو به صورت دستی می خوام
ممنون

مهرداد صفا
چهارشنبه 16 مرداد 1392, 11:09 صبح
با سلام.
مشکل اینجاست که Form1 در کد شما نام کلاس است و نه نام متغیر. پس به جای Form1 از کلمه کلیدی this استفاده کنید و نتیجه را ببینید.

hercool
چهارشنبه 16 مرداد 1392, 11:16 صبح
ممنون مهرداد جان
فقط یه سوال من این کد رو داخل یک باتن ایجاد کردم و می خوام با هر بار کلیک شدن روش یدونه تکست باکس ایجاد کنه حالا دقیقا نمی دونم چطور این کار رو انجام بدم چون نمی تونم رویداد خود باتن رو به عنوان تعداد کلیک شدن در نظر بگیرم

مهرداد صفا
چهارشنبه 16 مرداد 1392, 12:30 عصر
خواهش می کنم.
شما می تونید ابتدا یک لیست از Textbox داشته باشید و با هر بار کلیک روی button مورد نظر یک Textbox ساخته و به فرم و لیست اضافه کنید.
کد زیر در هر بار کلیک روی button1 یک Textbox زیر Textbox قبلی ساخته و آنها را به ترتیب از "textbox1" نامگذاری می کند:

//in the name of god
//صل الله علی محمد و آله

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
List<TextBox> Textboxes = new List<TextBox>();
public Form1()
{
InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)
{
Point location = Textboxes.Count > 0 ? Textboxes.Last().Location : Point.Empty;
TextBox NewTextbox = new TextBox();
NewTextbox.Name = "textbox" + (Textboxes.Count + 1).ToString();
location.Y += NewTextbox.Height * 2;
NewTextbox.Location = location;
//...
this.Controls.Add(NewTextbox);
Textboxes.Add(NewTextbox);
}
}
}