سوال در مورد Tab و ListBox در سی شارپ

#C

توسط thearrow در 7 سال پیش
0 23.5k 3 7 سال پیش
thearrow reza php-sec
0

سلام
یک سوال داشتم! (طبق معمول)

این پروژه رو اول دانلود کنید :
http://uploadtak.com/images/c8926_listbox.rar

خب همونطور که توی پروژه میبینید وقتی روی لیست باکس ( مثلا pashmak1 یا pashmak2 ) دوبار کلیک میکنید یک فرم 2 با اسم همون شخص باز میشه ( مثلا یه نام pashmak1 و pashmak2 )
حالا میخواستم بپرسم که چطوری میشه دقیقا همینکار رو کرد اما به یک صورت دیگه :
وقتی روی pashmak1 یا بقیه کلیک کنند فرم 2 رو با tabControl1 نشون بده و برای هر بار کلیک جای اینکه فرم 2 از اول باز شه ، یک تب به همون نامی که در لیست باکس هست بسازه و قابلیت Close هم برای هر کدوم داشته باشه :
مثلا مثل این :

هر تب هم شامل یک تکست باکس باشه و یک BUTTON

امیدوارم که فهمیده باشید چون میدونم گُنگ گفتم

ممنون میشم کمکم کنید

0

سلام اگه درست فهمیده باشم میخواید از فرم1 به فرم 2 کنترل اضافه کنید

**نکته خیلی مهم:**خاصیت Modifiers کنترل TabControl رو باید روی public بذارید.

سورس کامل:

[CSHARP]using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Form2 frm = new Form2();
public Form1()
{
InitializeComponent();
}

    private void listBox1_DoubleClick(object sender, EventArgs e)
    {
        if (listBox1.SelectedIndex != -1)
        {
            string title = (string)listBox1.SelectedItem;
            TabPage myTabPage = new TabPage(title);
            frm.tabControl1.TabPages.Add(myTabPage);
            
            //create button and it's event
            Button button1 = new Button();
            button1.Click += new System.EventHandler(button1_Click);
            button1.Location = new Point((myTabPage.Width / 2) - (button1.Width / 2), myTabPage.Height - 30);
            button1.Text = "Click On Me!";
            button1.AutoSize = true;
            myTabPage.Controls.Add(button1);

            //create button and it's event
            Button button2 = new Button();
            button2.Click += new System.EventHandler(button2_Click);
            button2.Location = new Point((myTabPage.Width / 2) - (button1.Width / 2)+button1.Width+20, myTabPage.Height - 30);
            button2.Text = "Close Tab";
            button2.AutoSize = true;
            myTabPage.Controls.Add(button2);
            
            //Add textbox control to new tabpage
            TextBox textBox1 = new TextBox();
            textBox1.Location = new Point(5, 5);
            textBox1.Text = "type some text...";
            textBox1.Multiline = true;
            textBox1.Height = button1.Top - 10;
            textBox1.Width = myTabPage.ClientRectangle.Width - 10;
            myTabPage.Controls.Add(textBox1);
        }
    }
    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("You Clicked on me!");
    }
    private void button2_Click(object sender, EventArgs e)
    {
        frm.tabControl1.TabPages.Remove(frm.tabControl1.SelectedTab);
    }

    private void btnShow_Click(object sender, EventArgs e)
    {
        frm.Text = "Softafzar.net";
        frm.Show();
    }


}

}
[/CSHARP]

پروژه هم پیوست شد.

0

سلام دقیقا همون چیزی بود که میخواستم اما با این تفاوت!!!! که دیگه دکمه ShoW Form2 در فرم نباشه و وقتی که روی خود لیست باکس کلیک کنی این کار رو انجام بده
ممنون و سپاس گذارم

0

خوب این رو که خودت تو پروژت نوشته بودی حالا نمیتونی دوباره همون کارو بکنی؟

[CSHARP]
frm.Show();[/CSHARP]
رو بذار بعد کد
[CSHARP] if (listBox1.SelectedIndex != -1)
{[/CSHARP]

خوش آمدید

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