how to resize lable text form2 at run time in C# windows application?.. for example if click button in form1 to open form2 then how to change form2 label text at run time...normaly form2 label text "saran" but if you can click form1 button1 click automatically change to "SARAN"
Example code:
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
}
You will either have to make the modifier public of the Textbox on form2 or you will have to create a method in form2 that will change the text on the form.
Something like
Example 1: textbox modifier is public
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.myTextBox.Text = "TADA";
form2.Show();
}
Example 2: public method on form2
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.SetMyTextBox("TADA");
form2.Show();
}
Related
I have a Windows Form (let's call it Form1) that opens a second windows form (Form2) to make the user select something from a comboBox.
// create form1
var Form1 = new Form1();
Form1.Show();
// event to open form2
private void openForm2(object sender, EventArgs e)
{
Form2 Form2= new Form2();
Form2.Show();
}
After selecting an item in the comboBox, the user clicks on the "Update" button to update a textBox in Form1 with the selected value.
private void updateForm1(object sender, EventArgs e)
{
// Form1.textBox1 is not accessible
}
I know how to pass a value from Form1 to Form2, but how can I pass a value from Form2 back to the active Form1 ? I can't access the active Form1 without recreating the form.
I found the answer by passing an event handler.
// propertie in form1 to hold the form2 instance to get the value back
private Form2 _form2;
public Form2 form2
{
get { return _form2; }
set { this._form2= value; }
}
// opens the form1
var Form1 = new Form1();
Form1.Show();
// event to open form2
private void openForm2(object sender, EventArgs e)
{
Form2 Form2= new Form2();
Form2.FormClosing += new FormClosingEventHandler(getValueFromForm2);
Form2.Show();
this.form2 = Form2;
}
// event to retrieve the value and update textbox of form1
private void getValueFromForm2(object sender, FormClosingEventArgs e)
{
Control ctrl = this.form2.Controls.Find("theControlWithTheValue", true)[0];
// control is a listbox
ListBox lbox = ctrl as ListBox;
// update form1 textbox
textBoxInForm1.Text = lbox.SelectedItem.ToString();
}
How can I change the image of a button from form 3 to form 2? I use those buttons to navigate between forms, and want to, when I click on button in form 3, to get back to form 2, to have changed the picture of button in form 2.
This is how I navigate between forms.
FORM2 BUTTON
private void button1_Click(object sender, EventArgs e)
{
Form3 m = new Form3();
m.Show();
this.Visible = false;
this.Hide();
}
FORM3 BUTTON
private void button14_Click(object sender, EventArgs e)
{
Form2 m = new Form2();
m.Show();
this.Visible = false;
this.Hide();
}
In your button on FORM 3, do something like this:
private void button14_Click(object sender, EventArgs e)
{
Form2 m = new Form2();
m.button1.BackgroundImage = Image.FromFile(#"C:\Users\Public\Pictures\Sample Pictures\Chrysanthemum.jpg");
m.Show();
this.Visible = false;
this.Hide();
}
In order for this to work, the button1 on your FORM 3 must be accessible. So go to FORM 3 and mark button1 as public.
I have main form which has several buttons, each button opens new form. When i click button1, form1 opens and when i click button2, form2 opens but form1 goes back to the main form. I want functionality such that each new form opens over the parent form and the most recent form on the top.
This is my code
private void button1_Click(object sender, EventArgs e)
{
Form1 form = new Form1();
form.Show();
}
private void button2_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.Show();
}
private void button3_Click(object sender, EventArgs e)
{
Form3 form = new Form3();
form.Show();
}
Each form has a topmost property, just set them to true
private void button1_Click(object sender, EventArgs e)
{
Form1 form = new Form1();
form.Show();
form.TopMost = true;
form.Activate();
}
private void button2_Click(object sender, EventArgs e)
{
Form2 form = new Form2();
form.Show();
form.TopMost = true;
form.Activate();
}
private void button3_Click(object sender, EventArgs e)
{
Form3 form = new Form3();
form.Show();
form.TopMost = true;
form.Activate();
}
I have the following code:
in form1
private void button6_Click(object sender, EventArgs e)
{
Form Form4 = new Form4();
Form Form5 = new Form5();
Form Form6 = new Form6();
Form4.Show();
Form5.Show();
Form6.Show();
}
in form5 i have a button that must close form4, form5 and form6. as following:
private void button2_Click(object sender, EventArgs e)
{
Form Form4 = new Form4();
Form Form6 = new Form6();
Form4.Close();
Form6.Close();
this.Close();
}
but Form4 and Form6 are still open!!!
private void button2_Click(object sender, EventArgs e)
{
Form4 form4 = (Form4) Application.OpenForms["Form4"];
Form5 form5 = (Form5) Application.OpenForms["Form5"];
form4.Close();
form5.Close();
}
To close in proper way you have to know what do you want to close. In your case you are creating new Forms on beggining, and another ones with the same names visible locally before trying to destroy them.
Form Form6 = new Form6(); are totally different in both of your clicked buttons. Then, if you want to make it more visible generate interesting forms in constructor method and put definition as class fields like.
public partial class Form1 : Form
{
Form form2; // be sure all componentes see all forms
Form form3;
Form form4;
public Form1()
{
InitializeComponent();
form2 = new Form(); // create new Forms
form3 = new Form();
var button = new Button();
button.Click += new EventHandler(button_Click); // tell the button what should be called when click
form4 = new Form();
form4.Controls.Add(button); // add button progrimicaly to form
}
void button_Click(object sender, EventArgs e)
{
form2.Hide(); // hide on click
form3.Hide();
form4.Hide();
}
private void Form1_Load(object sender, EventArgs e)
{
form2.Show(); // show on load
form3.Show();
form4.Show();
}
}
My mainForm contains two buttons(btnLoad & btnChange) and a panel
When the btnLoad is clicked, it loads the other forms(there are 5 different froms with different controlers) into the panel. Let me assume one of it named Form2 which contains a label(labelMessage)
My problem is, when I click the btnChange the following statement won't work.
f2.labelMessage.Text = "Button Change Clicked";
My codes are
// codes on mainFrom
private void btnChange_Click(object sender, EventArgs e)
{
Form2 f2 = new From2();
f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public
}
private void btnLoad_Click(object sender, EventArgs e)
{
panelDock.Controls.Clear();
Form f2 = new Form2();
f2.TopLevel = false;
panelDock.Controls.Add(f2);
f2.Show();
}
is this wrong?
Since Form2 is already shown you should use Application.OpenForms instead of creating a new instance of Form2
private void btnChange_Click(object sender, EventArgs e)
{
Form2 f2 = (Form2)Application.OpenForms["Form2"];
f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public
}
From your comment that Form2 is in a panel you can try
private void btnChange_Click(object sender, EventArgs e)
{
Form2 f2 = (Form2)panel1.Controls["Form2"];
f2.labelMessage.Text = "Button Change Clicked"; //labelMessage's modifier is public
}