|
Second version:
public static void disposeComponents(Component f, bool disposeForms) {<br />
foreach (FieldInfo fieldInfo in f.GetType().GetFields(BindingFlags.Instance | BindingFlags.NonPublic)) {<br />
object value = fieldInfo.GetValue(f);<br />
if(value is Form && disposeForms == false) continue;<br />
if(value is Form && f is Form) {<br />
if( ((Form)f).ParentForm == value ) continue;<br />
if( ((Form)f).MdiParent == value ) continue;<br />
}<br />
if(value is IDisposable && value != null) {<br />
((IDisposable)value).Dispose();<br />
fieldInfo.SetValue(f, null);<br />
}<br />
}<br />
System.GC.Collect();<br />
}
|
|
|
|
|
I reiterate - if you don't trust the garbage collector, don't use it. You're fighting the framework, and performance can only suffer.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Forget the garbage collector (comment that line).
I've posted that snippet to share with the community this idiom of disposing components in C# Windows Forms applications.
Hope this clarify the topic of this post.
Thanks however for the suggestion (as I have already said, I am new to C#)
|
|
|
|
|
Using Visual Studio .NET 2003, how do I give a .exe an icon? I know, with vb .net just click properties on the project then go to ==> build ==> application icon.
Thanks
|
|
|
|
|
In the yourForm class
this.Icon = //your icon
|
|
|
|
|
I actually want an icon for the executable file not just in the form's title bar.
Thanks for the reply!
|
|
|
|
|
|
It was under properties --> common properties --> general -->application.icon for my C# project. I simply overlooked it. Thanks for your reply!
|
|
|
|
|
Could someone post a few lines of code using Regex to validate data in a text box?
My requirements are to A)ensure that the text entered is a number that can be positive or negative and B)it can either have a decimal point or not have a decimal point. That's it....
Anything that could get me started learning Regex would be appreciated....
I've read several articles today but can't seem to find one to address this particular type of problem, that is-- I know how to validate "abc" but not an integer or floating point.
|
|
|
|
|
Expresso is the program you need to learn regex.
How about -?\d+.?\d? ? This DOES require a leading digit on the decimal place tho. Making this optional but making sure there's more than just a . and no numbers is a little more complex.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
|
Using the Word Object in C# I have implemented the before save event. I set the cancel boolen to true but it still does not cancel the save. I am programming in office xp using word 10.0 dll. anybody have any idea what I am doing wrong?
public void myWordApp_DocumentBeforeSave(Microsoft.Office.Interop.Word.Document doc, ref bool SaveUI,ref bool Cancel)
{
if (GetProperty(doc))
{
Process[] procs = Process.GetProcessesByName("WINWORD");
IntPtr hwnd = procs[0].MainWindowHandle;
DialogResult result =
MessageBox.Show(new WindowWrapper(hwnd),"Do you
want to quit save
action?","OfficeTest",MessageBoxButtons.YesNo);
switch (result)
{
case DialogResult.Yes:
Cancel = true;
break;
default:
break;
//save it.
}
}
}
Thanks
notsnoj
|
|
|
|
|
found my solution on the below web page
http://support.microsoft.com/default.aspx?scid=kb;en-us;830519
notsnoj
|
|
|
|
|
Using the Word Object in C# I have implemented the before save event. I set the cancel boolen to true but it still does not cancel the save. I am programming in office xp using word 10.0 dll. anybody have any idea what I am doing wrong?
public void myWordApp_DocumentBeforeSave(Microsoft.Office.Interop.Word.Document doc, ref bool SaveUI,ref bool Cancel)
{
if (GetProperty(doc))
{
Process[] procs = Process.GetProcessesByName("WINWORD");
IntPtr hwnd = procs[0].MainWindowHandle;
DialogResult result =
MessageBox.Show(new WindowWrapper(hwnd),"Do you
want to quit save
action?","OfficeTest",MessageBoxButtons.YesNo);
switch (result)
{
case DialogResult.Yes:
Cancel = true;
break;
default:
break;
//save it.
}
}
}
Thanks
notsnoj
|
|
|
|
|
I'm a student currently trying to learn C# for software engineering class. I've got a question about C# classes. In vb all you have is public class "class" and then end class. However, in C# you have:
public class Contact
{
public Contact()
{
}
}
What is the purpose of public Contact() within public class Contact?
Thanks!
|
|
|
|
|
|
VB must have constructors, you just may not have seen them. As your code stands, you could remove the second public Contact, as it does nothing. However, this code is called automatically when you create a new Contact, and so you can put any variable initialisation or other actions you may have to take to set up a Contact within this class.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
VB have Constructor too but unlike C# where the constructor name is the class name the VB constructor name
is New So your VB class will be somthing like
Public Class Contact
' Class Constructor
Overloads Sub New( )
End Sub
End Class
MCAD
|
|
|
|
|
You can have many constructors as well but they must all differ in their parameters. This allows you to create your Contact class differently depending on what parameters you pass it, which means only one of the constructors will be called when you instantiate (create) your Contact object. I think this is what they mean by the term "polymorphism".
public Contact()
{
}
public Contact(int publicID)
{
}
public Contact(int publicID, int securityID)
{
}
notsnoj
|
|
|
|
|
mitsemaj wrote:
I think this is what they mean by the term "polymorphism".
Sorry, no. Polymorphism is where you have an instance of a base class, and can define it to be any of the available derived classes.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Aha, thanks, is it overloading then?
notsnoj
|
|
|
|
|
Yes, the constructor is just another method that can be overloaded.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Well, overloading is also polymorphism, it's compile time polymorphism, as opposed to virtual functions, which offers runtime polymorphism.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
I'm trying to load a sorted list from a database in Access. Would I put my loop statements in the constructor? Sorry for dumb questions, but we're learning this on our own. NO help from my professor as she doesn't know C#!
Like so?
VB
Public Class Contacts
Private contact As New contact
Public ContactList As New SortedList
Public Sub LoadFile(ByVal ds As DataSet)
Try
Dim tbl As DataTable = ds.Tables(0)
Dim row As DataRow
For Each row In tbl.Rows
contact = New Contact
With contact
C# - I know the dim and such isn't correct syntax, getting frustrated! Got to learn C# in 1 week!
private Contact myContact = new Contact();
public SortedList ContactList = new SortedList();
public Contacts()
{
Dim tbl As DataTable = ds.Tables(0)
Dim row As DataRow
For Each row In tbl.Rows
contact = New Contact
}
|
|
|
|
|
Here's what you need to do.
Before you continue with the problem, do the following--
Make sure you REALLY know --
If I have this--
class Boo
{
private:
int x;
int y;
}
1. How big is a Boo object? That is-- If I say "Boo b" -- how big is a Boo?
2. Were I to "instantiate" a Boo "object" where would I do that?
3. Is "class Boo" and object? (I think not....)
Hope this helps...
|
|
|
|