PDA

View Full Version : استفاده از یک فرم در فرمی دیگر



برنامه نویس جوان
جمعه 19 دی 1382, 20:17 عصر
با سلام

من می خواهم از با کلیک کردن یک botton در یک فرم ، فرمی دیگر برایم باز شود که می شود اما هر کاری می کنم نمی تونم مثلاٌ یک botton در فرم دوم ایجاد کنم تعریف botton انجام شده و بعد از اینکه مثلا وارد می کنم
botton1.Show(); نشان داده نمی شود با اینکه فرم با همین دستور نشان داده می شود. :roll:

با تشکر

Mahdavi
جمعه 19 دی 1382, 21:42 عصر
دوست عزیز احتمالا منظور شما دستور

form2.show();
البته شما قبلش باید یه object از اون بسازی . فرض کن فروم دوم شما form2 باشه :


form2 fr = new form2();
fr.show();

برنامه نویس جوان
شنبه 20 دی 1382, 12:41 عصر
با سلام

ببخشید که وقتتان را می گیرم اما من آبجکت سازی نکردم ولی فرم نشان داده میشه من اینطوری نوشتم:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace WindowsApplication6
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Button button1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after InitializeComponent call
//
}

/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
//
// button1
//
this.button1.Location = new System.Drawing.Point(72, 104);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(144, 48);
this.button1.TabIndex = 0;
this.button1.Text = "Click here to open new form";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.ClientSize = new System.Drawing.Size(292, 273);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.button1});
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);

}
#endregion

/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
myform();
}
public void myform()
{
Form form2=new Form();
Button button2=new Button();
form2.Show();
button2.Show();
}
}
}

اما اون button2 در form2 نمایش داده نمیشه حالا با توجه به گفته های شما که خیلی هم منطقی به نظر میرسه من باید کجا آبجکت سازی کنم؟(ببخشید چون تا حالا تو محیط ویژوال کار نکردم)

با تشکر فراوان

Mahdavi
شنبه 20 دی 1382, 15:29 عصر
دوست عزیز دلیل خاصی داره که میخواهید botton را خودتان در زمان اجرا بسازید ؟؟
اگه اینطور نیست خوب تو میحط design‌یک فرم ساخته و یه دکمه رو اون بزارید.

may_csharp
یک شنبه 21 دی 1382, 12:39 عصر
این جوری



Form1 f1=new Form1();
Button b = new Button();
f1.Controls.Add(b);
f1.Show();

برنامه نویس جوان
یک شنبه 21 دی 1382, 12:43 عصر
ممنون از همگی دوستان

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

باز هم ممنون

احمد سامعی
سه شنبه 28 شهریور 1385, 18:42 عصر
دوست عزیز احتمالا منظور شما دستور

form2.show();
البته شما قبلش باید یه object از اون بسازی . فرض کن فروم دوم شما form2 باشه :


form2 fr = new form2();
fr.show();

درود و صد بدرود بر مردمان ایران زمین

استاد روشی که شما در بالا گفتید درسته اما یک اشکال رو ایجاد می کنه اون هم وقتی فرم جدید باز می شه در پایین تول بارز ویندوز دوتا گذینه از برنامه نمایش داده می شه یعنی دوتا از این برنامه بازه و در حال اجرا ، منظورم رو می فهمید حال اگه بخواهیم این طور نباشه چه کار باید کرد؟ ( مثل وقتی که از حالت MDI استفاده می کنیم)

once4ever
سه شنبه 28 شهریور 1385, 20:17 عصر
دوتا راه داره
1. حالت درستش اینه (فقط حالت MDI ) که فرم اول رو به عنوان parent فرم دوم معرفی کنی:

form2.MdiParent = this;

2. تو قسمت design مشخصه showintaskbar رو برداری

hesham_javan
چهارشنبه 20 دی 1385, 18:31 عصر
سلام
form2 fr = new form2();
fr.show();
این درست است اما وقتی که برنامه دارای فرم های زیادی باشد و در هر فرم 2 دگمه برای جلو و عقب داشته باشیم یعنی یرای دگمه NEXT فرم 2 بخواهیم فرم 3 نمایش داده شود و برای BACK فرم 3 بخواهیم فرم 2 نمایش داده شود و اگر هر بار شیء را تعریف کنیم به نظر خوب نمی آید راه بهتری نیست ؟

iman_s52
چهارشنبه 20 دی 1385, 18:53 عصر
خوب از فرم استفاده نکن !!!
اگه میشه از Panel استفاده کن؟؟؟؟

egoldashraf
سه شنبه 26 دی 1385, 01:31 صبح
یه راهش هم اینه
new form2().show();l