|
How to reuse event
I am creating one c# project. In this project I have one mdi form and many child forms.
All the child forms contains one panel named as panel1.
Now when child form opens i use the following code in all child form
all child forms' load event contains the following line.
this.WindowState = FormWindowState.Maximized;
and all child forms' resize event contains the following line.
panel1.Left = (this.ClientSize.Width - panel1.Width) / 2;
panel1.Top = (this.ClientSize.Height - panel1.Height) / 2;
so my question is if possible that the above code i write only once so i donot write this code in all the child forms load and resize event.
|
|
|
|
|
Create a child form which contains only that code, and derive the other forms from that instead of Form.
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
The first thing is why are you using MDI? It's an outdated concept and from the rest of your description, you're not making an application type that MDI was originally designed for.
What you're looking at doing is pretty easily done. Create a BaseForm class that inherits from Form (like your forms do now) and put the code that you want in it. Then all subsequent forms must inherit from this form. Done.
|
|
|
|
|
Dave Kreskowiak, you are telling me that MDI is outdated concept. so I just want to know which concept is used for developing software in c#. I am new in c#. So don't know what are the concepts for the software in current market ? so i am asking you that which concept is used instead of MDI form.
Actually i am beginner so if you have some time so please baseform class code and my form that calls that baseform class code give me.
|
|
|
|
|
MDI stands for "Multiple Document Interface". It was designed to support multiple instances of a document editor class, such as a Notepad that can edit multiple files at the same time.
If you think you need MDI to show multiple windows in an application, you're very mistaken.
You're a beginner? Don't even start thinking about "the market". Learn the basics first.
|
|
|
|
|
Multiple Documents sounds to me like multiple browser windows in tabs within the same browser window. I don't get why that concept should be outdated.
Ciao,
luker
|
|
|
|
|
That's one very specific use, but the concept and design of MDI predates tabbed browsers by a significant number of years.
Tabbed browsers doesn't don't even use the concept nor you don't see applications using the MDI concept any more. Not even the most visible example of it is using it, Microsoft Office.
MDI doesn't support "tearing off" tabs. What you see as separate tabs in a browser is actually separate processes, in IE anyway. That's very different from how MDI works.
|
|
|
|
|
Actually i am beginner so if you have some time so please baseform class code and my form that calls that baseform class code give me otherwise if you are busy so it's ok no problem. i will understand.
|
|
|
|
|
Have time?? Very funny!
I'm eyeball deep into my own 50,000 line project right now. Time is a luxury I don't have.
|
|
|
|
|
Sorry, I hope that you can forgive me.
|
|
|
|
|
Hello Everybody,
i have some little problems with building a map editor.
i have build the map editor program from the XNA tutorials form Jamie McMahon. what i want is that all the controls except the Map editor himself are in another form. i tried several ways to do this but i just cant get it to work.
What i do know when the controls are all in the same form is calling a new event at button click.
newMapToolStripMenuItem.Click +=<br />
new EventHandler(newMapToolStripMenuItem_Click);<br />
<br />
<br />
newMapToolStripMenuItem_Click(object sender, EventArgs e)<br />
{<br />
execute code<br />
}
Is there some one that can say me how i can call this event form a button on another form?
Greetings Twan
|
|
|
|
|
Possibly like so:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form2 f = new Form2();
f.Show();
}
public static void C1(object sender, EventArgs e)
{
MessageBox.Show("C1");
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
button1.Click += new EventHandler(Form1.C1);
}
}
|
|
|
|
|
Joost thanks for this solution.
You should reply in the forum, so other people can learn or perticipate. If you instantiate your forms with the button from the Map editor you can pass a reference to the map editor and then you do not need a static method. Like the following (Form1 is the map editor and Form2 is a "form with a button"):
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Form2 f = new Form2(foo);
f.Show();
}
public void foo(object sender, EventArgs e)
{
MessageBox.Show("foo");
this.Text = "I was foo-ed";
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public Form2(EventHandler h)
{
InitializeComponent();
this.button1.Click += h;
}
}
Another approach is the following:
public partial class Form1 : Form
{
public static EventHandler fooHandler;
public Form1()
{
InitializeComponent();
fooHandler = foo;
Form2 f = new Form2();
f.Show();
}
public void foo(object sender, EventArgs e)
{
MessageBox.Show("foo");
this.Text = "I was foo-ed";
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.button1.Click += Form1.fooHandler;
}
}
it works lik this
|
|
|
|
|
I also meet another problem.
With passing values between forms.
This is what Microsoft help says.
form 1
private Form2 otherForm;
private void GetOtherFormTextBox()
{
textBox1.Text = otherForm.TextBox1.Text;
}
and form 2
public TextBox TextBox1
{
get
{
return textBox1;
}
}
But when i do this i get any value at all?
my code know in til map editor?
public void CurrentTileChange(object sender, EventArgs e)
{
if (tileset != null)
{
int index = (int)form2.nudCurrentTile.Value;
FillPictureBox(index);
tileDisplay1.Invalidate();
}
what do i have to change to make it right?
|
|
|
|
|
You could pass data using your own eventhandler!
public partial class Form1 : Form
{
public delegate void FooHandler(int myParam1, string myParam2);
public static FooHandler fooHandler;
public Form1()
{
InitializeComponent();
fooHandler = foo;
Form2 f = new Form2();
f.Show();
}
public void foo(int myParam1, string myParam2)
{
MessageBox.Show(string.Format("foo {0},{1}", myParam1, myParam2));
this.Text = "I was foo-ed";
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
this.button1.Click += new EventHandler(button1_Click);
}
private void button1_Click(object sender, EventArgs e)
{
if (Form1.fooHandler != null) Form1.fooHandler(2, "foo-you!");
}
}
|
|
|
|
|
thank you like this it would work.
my only question know is it also possible to change object property's on the other form in this same event handler
public void OpenNewMap(object sender, EventArgs e)
{
frmNewMap.ShowDialog();
if (frmNewMap.OkClicked)
{
tileset = frmNewMap.tileset;
texture = Texture2DFromFile(frmNewMap.TilesetTextureName);
tilesetBitmap = Bitmap.FromFile(frmNewMap.TilesetTextureName);
tileMap = new TileMap(frmNewMap.MapWidth, frmNewMap.MapHeight);
layerToolStripMenuItem.Enabled = true;
saveMapToolStripMenuItem.Enabled = true;
clbLayers.Items.Add(frmNewMap.TileLayerName, true);
clbLayers.SelectedIndex = 0;
clbLayers.SelectionMode = SelectionMode.One;
currentLayer = tileMap.layers[0];
FillPictureBox(0);
form2.nudCurrentTile.Value = 0;
form2.nudCurrentTile.Maximum = tileset.tiles.Count - 1;
this.Invalidate();
}
}
greetings twan
|
|
|
|
|
I need to export my Crystal Report 2008 rpt file into text format
Sanath
|
|
|
|
|
|
Hi Maciej Los,
Thank u so much.
|
|
|
|
|
You're very welcome
|
|
|
|
|
|
What kind of answer will you get when the question is "My Web browser is slow to watch a movie.., Please help me out".
To get answer, be specific with your question.
What kind of form exe it is?
What it does?
Why or how you say it is slow?
etc
|
|
|
|
|
hello sivaraman,
i made the windows forms application in c#. and crate the setup file and run the setup, then files related to application are goes down to c:\program files.... by default and create the desktop icon.
but when run the application it take more time to open forms.
but when setup run and change his destination other than C:\Program files to other drive it works fine.
then please help me about this problem.
thanks.
|
|
|
|
|
Make sure C:\Drive has More than 1 GB disc Space. Sometimes this will slow down the performance.
|
|
|
|
|