|
That was helpful.... thanks.
But my problems are mainly due to my development environment. My professor wants me to use Eclipse 2.1 with the Improve C# plugin. Eclipse is excellent for Java development. But this IDE is not tuned for C# and lacks many of the features of VS7.
Infact, I'm totally new to .NET, C#, Eclipse.... And don't have much windows programming experience either. And I'm doing my semester project which is a 3D Graphics Engine using all of the above and this wrapper for OpenGL called CsGL by Lloyd Dupont & team. So I'm in a tight spot. Do you know of anyone who knows them all.
What I'm really interested is in - how does the compiler keep track of these files, especially if a referenced .cs file is not even in the project folder????? Meaning, how does it associate a using statement with a specific file??
"Excellence is never an accident" - JJC
|
|
|
|
|
nosmij wrote:
how does the compiler keep track of these files
Ok, first we need to get in touch with something Jonny was trying to explain.
A namespace is just a logical grouping construct used by C# (and all other .NET languages) to keep the chances of naming collisions down and to give some sense of order to the framework.
An assembly is a physical grouping construct used by the framework, generally used to keep common functionality together. These usually have a .dll or .exe extension (though others are possible).
A namespace -- since it is a logical grouping construct -- can span multiple assemblies and you can have multiple namespaces in an assembly (you can also have multiple namespaces span multiple assemblies). Another way of thinking of namespaces is that they are prefixes to class names and this is how the .NET Framework treats them.
Unfortunately for us programmers, we get bored if we have to type the namespace before every classname. This is where the using statement comes in. It lets us skip typing the namespace before the class name, if we put that we are using that namespace, enabling us to get on to more important thing.
In order to use a class, you must first reference the assembly it is located in. This, again, has nothing to do with the using statement but is instead something you tell the C# compiler (either through the command-line or by setting options in your IDE). By default the assemblies listed in %WINDIR%\Microsoft.NET\Framework\%VERSION%\csc.rsp will be referenced by the compiler.
A reference means that you may or may not need data out of that assembly, but if you try to use a data type that can't be found, the framework will load the assembly that data type is located in first. You can reference assemblies you don't use, but you must always reference assemblies that you use (whether that reference comes from the csc.rsp or by specifying it manually).
As to optimizations regarding excess references:
If you never use a data type in an assembly, even if it is referenced by the compiler, then you will never load that assembly into memory. Also, if you wrote your code so that you conditionally use a data type out of an assembly, then only if that condition is true will the assembly be loaded.
Hope that makes some sense, if you have any more questions I'll answer them tomorrow I need sleep
James
"It is self repeating, of unknown pattern"
Data - Star Trek: The Next Generation
|
|
|
|
|
Hey...
Thanks a ton. That sure did clear up a lot of fog. I get the picture now.
And my other question. about the project... any leads????
"Excellence is never an accident" - JJC
|
|
|
|
|
BTW, what the hell is GAC - global assembly cache. is this the csc.rsp you're talking about. If so how can you add new assemblies to the GAC. And also, if you add some to the GAC, can you get away with not having these custom assemblies in you .exe's folder?
"Excellence is never an accident" - JJC
|
|
|
|
|
The GAC is a common store for .NET Assemblies that need to be accessible to the entire machine. It speeds up load times of apps etc...
Assemblies like mscorlib.dll and System.Windows.Forms.dll are all stored there for easy access.
By running:
C:\WINNT\Microsoft.NET\Framework\v1.0.3705>gacutil.exe
in a console will list the functions avaliable to you for using the GAC. Including adding,retrieving and removing assemblies from the cache.
preJITed native assemblies is also stored in the cache.
More info at MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconglobalassemblycache.asp[^]
"If you just say porn then you get all manner of chaff and low grade stuff." - Paul Watson, Lounge 25 Mar 03 "If a man is standing in the middle of the forest speaking and there is no woman around to hear him, is he still wrong?" - Anon
Jonathan 'nonny' Newman
Homepage [www.nonny.com] [^]
|
|
|
|
|
I have this little C# app I made, called "//AC". All it has is some buttons that when you click on them, they open the program. I have a button for, Explorer, Internet Explorer, Windows Media Player and Outlook. It's as simple as that.
Now, there is another program, called "moosebdc.exe" or something that keeps closing explorer on me. The reason, I made my app with a button that launches explorer again.
The question is... How could I make it so my app "AC.exe" can detect when the program "explorer.exe" is shut down, and then imeadetly restart it.
I assume it's gonna go in the Main method, which is provided below.
static void Main()
{
Application.Run(new Form1());
}
Could somebody help?
/\ |_ E X E GG
|
|
|
|
|
Look at System.Diagnostics.Process class, and the GetProcessesByName method to do this.
|
|
|
|
|
Ok, thanks for the start... I'll go mess around with it and see what I can do.
/\ |_ E X E GG
|
|
|
|
|
Im lost...
How can I let my program know if explorer.exe is running or not... and if it isn't start it? Can somebody start me off some?
/\ |_ E X E GG
|
|
|
|
|
eggie5 wrote:
How can I let my program know if explorer.exe is running or not
You have your program go through all of the processes running, if you don't find explorer.exe, then it isn't running. There is an example in MSDN which should help: Look up System.Diagnostics.Process.GetProcessesByName in MSDN and you should see the example there.
eggie5 wrote:
and if it isn't start it?
Use the System.Diagnostics.Process.Start method to start up a new process.
James
"It is self repeating, of unknown pattern"
Data - Star Trek: The Next Generation
|
|
|
|
|
Ok, I see the example on MSDN. But, I then realized that if I only put the code in the "Form1_Load" method, it will only check if it's running once, right? (when the form loads). I need it to be checking constanly if explorer.exe is running or not...
How would I impliment that?
/\ |_ E X E GG
|
|
|
|
|
eggie5 wrote:
How would I impliment that?
You can use the Timer class, in VS.NET use the Timer from the Windows Forms tab of the Toolbox.
Its a relatively straight-forward class, you set the interval (in milliseconds), enable or disable it, and write the code you want to execute on every interval in the event handler for the Tick event.
James
"It is self repeating, of unknown pattern"
Data - Star Trek: The Next Generation
|
|
|
|
|
ok, so I have this....
private void Form1_Load(object sender, System.EventArgs e)
{
Process [] localByName = System.Diagnostics.Process.GetProcessesByName("notepad.exe");
}
So, first things first. From what I understand, the variable localByName (assuming it is a varible, and if it is what kind?) is storing the data from what ever "GetProcessesByName" returns, correct? If so what kind of data is it returing? A sting? A bool?
/\ |_ E X E GG
|
|
|
|
|
Perhaps you should get rid of this moosebdc program. Personally I don't like apps that close other things without my consent.
|
|
|
|
|
I want to format color for some specific rows that meet a certain conditon (for example last 5 rows) in DataGrid.NET, how will I do?
the same question for CheckedListBox, I want to format color for some specific item.
thanks.
|
|
|
|
|
I had realized a movable label control on windform, now I want it resizable look like the text label in PowerPoint,how to do it?
Thanks!
|
|
|
|
|
We are looking at buying a grid control, but I thought I'd see if our two issues are solvable with the DataGrid in .NET...
1. We need an event to fire when the user's selection of row/rows changes (when the user uses mouse and arrow keys). DataGrid does not support this natively, but is there some way to accomplish it?
2. The center horizontal alignment of column header text does not work but left and right do (documented MS bug); it centers all cells but not the column caption text. Is there a work-around to accomplish centering of the column header captions?
I am still using .NET Framework 1.0 if that matters.
Thanks,
Jason
|
|
|
|
|
I'm having a problem reactivating a child form window when it's minimized to its icon state inside a parent window.
If I can avoid using the child window handle that would be great.
Any help will be appriecated. Thanks!
|
|
|
|
|
I have a windows application in C#, that has a form dialog, but doesnt require any user interaction. The form has a timer that closes itself.
MyForm form = new MyForm();<br />
dr = form.ShowDialog();<br />
form.Dispose();
I assigned a new task to run the application in the Task Scheduler. It runs when I am logged in.
However, when I am logged out, the scheduled application runs up to the point of showing the dialog, but throws an exception:
DialogSystem.InvalidOperationException: It is invalid to show a modal dialog or form when the application is not running in UserInteractive mode. Specify the ServiceNotification or DefaultDesktopOnly style to display a notification from a service
Of course, Notepad set up the same way runs fine.
Can someone please point me in the right direction, either where to find the
result or what's happening?
Thanks for any and all help.
Ingram Leedy
You can't depend on your eyes when your imagination is out of focus.
--Mark Twain
|
|
|
|
|
You could try using form.Show() rather than ShowDialog() as this will load the form but not "Modally"...
...this might solve your problem but I'm a bit concerned that you might be solving the bigger problem in a "non-optimal" way...
Just a thought
Shaun.
|
|
|
|
|
I'm really after this - I have a progress form that is showing various information to the user when he is interactive.
Now if this application gets started non-interatively (ie, thru task scheduler when the user is logged out), I need the application to keep running as normal. It doesnt matter that the user sees the dialog or not.
Here is an example code:
ProgressForm progress = new ProgressForm();<br />
<br />
System.Threading.ThreadPool.QueueUserWorkItem( new System.Threading.WaitCallback( PerformCalculations ), progress );<br />
<br />
progress.ShowDialog();<br />
progress.Dispose();
Inside, my PerformCalculations there are bunches of callbacks to the form to update.
Is there a simple way to make the application behave the same for both interactive and non interactive?
Thanks!
Ingram Leedy
You can't depend on your eyes when your imagination is out of focus.
--Mark Twain
|
|
|
|
|
I need to loop through all components in a windows form. Is this possible, and if so, how do I do that?
What I really want to do is to get/set all components text-property in a windows form.
|
|
|
|
|
This will work for just the controls on the form:
foreach(Control subControl in myForm.Controls)
{
subControl.Text = "Howdy!";
}
However, if your controls have sub-controls (like a TabControl has it's own Control collection full of TabPages which then have their own controls), you'd have to use recursion.
SetSubControlText(Control ctrl, string text)
{
if(ctrl.Controls.Count > 0)
{
foreach(Control subControl in ctrl.Controls)
{
subControl.Text = text;
SetSubControlText(subControl);
}
}
}
If you call it like this: SetSubControlText(this, "Howdy!"); then you'll be passing the form to it and the method will loop through every control on the form, and their sub-controls, and set their text to Howdy!.
That should work...but I'm at school right now, and on their crappy computers without VS.NET, so this is untested. If it doesn't work, let me know and I'll look at it tonight.
Hawaian shirts and shorts work too in Summer.
People assume you're either a complete nut (in which case not a worthy target) or so damn good you don't need to worry about camouflage...
-Anna-Jayne Metcalfe on Paintballing
|
|
|
|
|
It works! Thank you very much
|
|
|
|
|
With the Windows API, I used GetSystemMetrics(SM_CXSCREEN)to get the screen size. How do I get it in .NET?
"Do unto others as you would have them do unto you." - Jesus
"An eye for an eye only makes the whole world blind." - Mahatma Gandhi
|
|
|
|