|
It's a copy and paste code so the code may not compile. This is just to show you how to do it.
public class FormManager
{
private MainForm mainForm;
public FormManager(MainForm mainForm)
{
this.mainForm = mainForm;
}
public virtual System.Windows.Forms.Form GetForm(Type type, object[] args)
{
return GetMDIForm(type, args);
}
private ChildForm GetChildMDIForm(Type type)
{
for (int i = 0; i < mainForm.MdiChildren.Length; i++)
{
if (mainForm.MdiChildren[i].GetType().Equals(type))
{
return (ChildForm)mainForm.MdiChildren[i];
}
}
return null;
}
public virtual ChildForm GetMDIForm(Type type, object[] args)
{
ChildForm form = null;
bool allowMultiple = false;
object[] attributes = type.GetCustomAttributes(typeof(ChildFormAttribute), false);
if (attributes.Length > 0)
{
allowMultiple = ((ChildFormAttribute)attributes[0]).AllowMulti;
}
if (!allowMultiple)
{
form = GetChildMDIForm(type);
}
if (form == null)
{
form = CreateChildMDIForm(type, args);
if (form != null)
{
form.MdiParent = mainForm;
form.WindowState = FormWindowState.Maximized;
form.Show()
}
else
{
throw new Exception(string.Format("Unable to create form of type '{0}'", type.ToString()));
}
}
else
{
form.BringToFront();
}
return form;
}
private ChildForm CreateChildMDIForm(Type type, object[] args)
{
ConstructorInfo ci = type.GetConstructor(System.Type.EmptyTypes);
ChildForm form = (ChildForm)ci.Invoke(args);
return form;
}
public void ShowRole()
{
Wine.Global.FormManager.Instance.GetForm(typeof(Wine.UI.Role), null);
}
}
[ChildFormAttribute(false)]
public partial class Role : ChildForm
{
public Role()
: base()
{
InitializeComponent();
}
}
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class ChildFormAttribute : System.Attribute
{
private bool allowMulti;
public bool AllowMulti
{
get
{
return allowMulti;
}
}
public ChildFormAttribute(bool allowMulti)
{
this.allowMulti = allowMulti;
}
}
|
|
|
|
|
Hi, i have a form which is size 500 * 300
I have groupbox, textboxes, and buttons inside that form. When the form is loading into my main mdi parent form, its size is 500*300, when i maximize the childform, my controls all are at the position top left. How do i make it center( when the window is maximize) depending on the screen size?
|
|
|
|
|
Hello everyone,
Two questions about XMLSerializer.
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer(VS.80).aspx
1.
It is mentioned -- "To increase performance, the XML serialization infrastructure dynamically generates assemblies to serialize and deserialize specified
types."
What means the assemblies?
2.
For the following sample, why creates two XMLSerializer instances, one is s and the other is ser?
Hashtable serializers = new Hashtable();
XmlSerializer s = new XmlSerializer(typeof(MyClass), myRoot);
object key = GenerateKey(typeof(MyClass), myRoot);
XmlSerializer ser = (XmlSerializer)serializers[key];
if (ser == null)
{
ser = new XmlSerializer(typeof(MyClass), myRoot);
serializers[key] = ser;
}
else
{
}
thanks in advance,
George
|
|
|
|
|
George_George wrote: What means the assemblies?
Are you kidding? http://www.google.com/search?hl=en&q=MSDN+%22What+is+an+assembly%22&btnG=Search[^]
George_George wrote: For the following sample, why creates two XMLSerializer instances, one is s and the other is ser?
They are two different samples as discussed in the text preceding the sample code section of the documentation. See the text and the use of the word "otherwise".
led mike
|
|
|
|
|
|
1.The XML Serializer creates an XML serialization assembly per type that you are trying to Serialize\DeSerialize.
you can increase performance using precompiled serialization assembly that you are creating using the sgen.exe utility.
2.Sorry but i dont have a clue for this one.
|
|
|
|
|
Thanks nissims,
1.
You mean CLR will create a new assembly (DLL/EXE) for each type I need to serialize, other than using existing CLR assembly (e.g. System.XML.dll)?
For example, when I want to serialize type Foo, CLR will create something like FooSerialize.dll?
2.
The additional dynamically created assembly will be deleted when I unload the Appdomain? And next time when I run my assembly again, each of the dynamically created assemblies will be created again?
3.
My assembly will invoke the dynamically created assemblies to do serialize/deserialize?
4.
"using precompiled serialization assembly that you are creating using the sgen.exe utility" -- do you have any samples or reference documents?
regards,
George
|
|
|
|
|
Hi,
I'm trying to convince a friend of mine to learn C#, and he's looking for a good book to start with. He has experience with VB 6, but isn't very familiar with oop. Any suggestions? Thanks,
-Ken
|
|
|
|
|
The C Programming Language by Kernighan & Ritchie , since a VB6 coder needs purification before approaching C# language.
(just kidding)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
(and I meant to put first)
After you read The C Programming Language
Then read Programming Visual C# 2005: The Language by Donis Marshall
Then read CLR Via C# by Jeffrey Richter
I have thousands of dollars invested in manuals and these two were by far the best in my library.
Scott P
“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”
-Edsger Dijkstra
modified on Tuesday, May 13, 2008 11:32 AM
|
|
|
|
|
Possibly you wanted to reply the OP,anyway, thank you.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
I dont think you want to leave us and c++,right?
|
|
|
|
|
What are you doing here, child? Back to C++ forum, immediately!
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
BTW did you see previous thread on the C# forum did you remember him?
|
|
|
|
|
No I cannot. Drugz, you know...
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
So see this [^] thread of yourself!
|
|
|
|
|
Oh CPallini is our friend on the c++ forum.
|
|
|
|
|
Those books are good recommendations. Anything by Richter is a good bet. Also get Effective C# by Bill Wagner, Addison-Wesley, $40. 50 advanced topics with concise mundane treatment. No stupid jokes or silly pictures.
|
|
|
|
|
Really a 1? someone not a Richter or Marshall fan?
“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”
-Edsger Dijkstra
|
|
|
|
|
If you like you can search with this title "programmer's heaven c# school" I read this book and I think its good book for your friend (of course I think c# is difficult than VB) I dont know C# is simple for me or its simple for all people specialy for memory management (I am working wtih c++)
Good luck!
|
|
|
|
|
Is there a way to determine the measurement units for a given locale using CultureInfo class or some other item in the framework?
Scott P
“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”
-Edsger Dijkstra
|
|
|
|
|
Not that I know of - a quick check of MSDN and it seems that setting is mysteriously missing from the CultureInfo class where one would expect it... however what kind of "measurement units" do you need? Just, for example, metric vs imperial units? (the setting for "Metric" or "U.S."
If so, I'd recommend just giving the user the choice, or if it's not an application where that "makes sense", I'd personally be quite comfortable with hardcoding it to:
US = US imperial units
Liberia = US imperial units
Burma = US imperial units
UK = Depends on types of units you're talking about, maybe imperial, maybe metric (officially metric, but they're a strange bunch!)
Anywhere else = Metric units
If you're talking about other measurement, such as how to display the date string or currency or whatever, you CAN get that from CultureInfo, but I guess you already knew that...
|
|
|
|
|
Ok, just as I thought. I have to do temperature conversions, not really a taxing affair but I like to do things in an extensible way. I have done a fairly substantial internationalization project before, but the units were specified by the company as some industry specific types, that had only one exception for Russia. I just coughed up the unit value and let the rest of the formatting be done by the CultureInfo class. Getting the measurement units would be a nice addition to that class.
I'll probably hard code or maybe derive a custom CultureInfo type to include your list. Thanks for the info, I appreciate the help.
Scott P
“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”
-Edsger Dijkstra
|
|
|
|
|
I stand corrected . That information is available in the RegionInfo class as it has an IsMetric property. I guess it makes sense if you think about the difference between what CultureInfo and RegionInfo should represent. Never thought to look in there... I almost never use that class.
Thanks again.
Scott P
“It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”
-Edsger Dijkstra
|
|
|
|
|
Thanks for finding that - I'll keep it in mind if I ever need it! (which is quite possible, as I also often work on "International" projects - just haven't had that particular requirement yet)
|
|
|
|