|
I've played around with suspendlayout.
I believe it's there to stop changes to layout being applied before you have done all the changes that you need.
However, i've used the two following pieces of code, and they produce dramaticaly different effects in terms of rendering:
Code one: Low Flicker, Pretty neat solution
<br />
this.SuspendLayout();<br />
this.Size = new Size(newWidth,newHeight);<br />
this.Location = new Point(newXLoc, newYLoc); <br />
this.ResumeLayout(true);
Code two: High Flicker, massive jerking to either side of resize points.
<br />
this.SuspendLayout();<br />
this.Location = new Point(newXLoc, newYLoc);<br />
this.Size = new Size(newWidth,newHeight); <br />
this.ResumeLayout(true);
Any ideas why this is if they are only applied after ResumeLayout is run?
Cata
|
|
|
|
|
Read the documentation for SuspendLayout and ResumeLayout if you're wondering what they do. It pretty much states what you already suspect. If you have the documentation installed locally for VS.NET (and any decent developer should), it's a heck of a lot quicker than waiting for a reply.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I know what it does, but I was wondering why it displayed different behavior depending on layout if it was executed at the same time.
All i did was switch the two middle lines around, and it looks hideous.
|
|
|
|
|
I've got a C# application that connects to a database, and does various things with it. My question is this: When designing an application that uses a database, what is the best programming practices to ensure speed and reliability? Should I have just one dataset with many adapters, or multiple datasets and multiple adapters? Will having many adapters cause my form to take longer to load? I'm able to use these things fine, but I don't want an inefficient application in case I am doing something wrong. Thanks..
Also, I notice that if I set the source of a comboBox to a column in a table, that the comboBox takes the liberty of setting the text to the first item in that column. I've tried various things, like setting the comboBox.Text = "", or setting the selectedItem to -1. So far nothing has seemed to work...I want the comboBox text to start out empty...any suggestions?
|
|
|
|
|
The time to initialize a DataAdapter is negligible compared to the time to execute its Fill or Update methods which opens the connection and executes the appropriate commands based on the DiffGram (DataSet which change-tracking information). Set up your DataAdapter s either upon initialization or use a provider pattern that initializes them only when needed (leaving the instances alive for future use).
Also, it's good to use typed DataSet s. Typed columns refer to the columns in your tables directly, where referring to them by index - or worse, by name - requires several lookups. You can create typed DataSet s in VS.NET by adding a new DataSet class to your project (Add->Add New Item) or using xsd.exe. The Solution Explorer can also help if you create a new DataSet class and drag-n-drop tables, views, or stored procs from a database connection to your design surface.
Finally, you really should read about the <cdoe>ComboBox.Text property. For one, it's only effective in some cases depending upon the value assigned to ComboBox.DropDownStyle . If you want to insert an empty element, after setting the DataSource property call Items.Insert(0, ""); or something similar. Take care, however, since this screw up your data binding (by inserting a null/empty column in your tables, which may violate a key constraint).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Doug:
I had the same problem with this in my program as far the the combobox is concerned. What i did was the following after a search.
dataset.Movie.Clear();
oleDbDataAdapter1.Fill(dataset);
if ( dataset.Movie.Count>0)
{
comboBox1.Text=dataset.Movie[0].Title;
}
else
{
comboBox1.Text="Sorry Jack No Data is in the Database!";
comboBox1.Enabled=false;
}
Hope this helps ya
Win32newb
"Making windows programs worse than they already are"
|
|
|
|
|
I am using multiple projects and I am trying to add project refernece to another project and I get the following error message:
A reference to NDMUI could not be added. An assembly must have a "dll" extension in order to be referenced.
I have these AssemblyIfo.cs file and i tried to sign the assembly, but i didn't write the KeyFile atribute because i can't find the CPS that is installed on my machine. Could this be the problem??? Please help where you can.
|
|
|
|
|
Just like it says... Are you trying to add a reference to an .EXE file? If yes, then it won't work. Signing it won't help the situation...
RageInTheMachine9532
|
|
|
|
|
As I mentioned to someone the other day, you CAN reference a .EXE if you use the command-line compilers. VS.NET won't let you, but the C# command-line compiler (csc.exe) and the CLR itself, for that matter, will. Don't ask me why VS.NET won't then - I wonder that myself.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I tried to use the C# command-line compiler, but the error message is still there.....what i actually was to compile my NDMUI.cs file.....i'm wondering if that is what you suggested??
|
|
|
|
|
Yeah, and what error message would that be? Do you tell your doctor that you have a pain and not tell him where?
You can reference a .EXE assembly using the /r switch just like you do a .DLL. I've done it before and there's nothing in the CIL specs that says you can't. A simple example:
csc.exe /t:exe /r:MyAsm.dll /r:MyApp.exe /out:Test.exe Test.cs Type /? as the switch to csc.exe for more information. If you get an error - which you didn't mention what error - still in your .cs source file, then it's something else. The error message will explain the problem.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I may have got thsi wrong, but are you trying to refrence an uncompiled CS file?
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|
|
No, the command line is compiling the Test.cs file, referencing two assemblies, MyAsm.dll and MyApp.exe. See the documentation for csc.exe in the .NET Framework SDK or type csc.exe /? for more information.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
is there anyway to get my C# winforms app to handle a keyboard keypress event in windows, whether or not the form is the active window?
i want to be able to detect caps lock, num lock and scroll lock presses without out polling the keyboard state
|
|
|
|
|
You would not be able to do this at any form level. I would imagine you'd have to write a service and have it hook into the OS (if NT even allows that type of hook)
___________________
Forgoing antagonism and separation, one enters into the harmonious oneness of all things. Lao Tzu
|
|
|
|
|
There are basically three types of hooks you can use. One is that you override WndProc and handle all messages sent to your form whether its active or not. In the case of keyboard events, your application must be active to recieve them (except when using the other two hooks to be mentioned...).
You can use an IMessageFilter along with Application.AddMessageFilter and Application.RemoveMessageFilter to add a message filter that applies to all windows (that includes controls) in your application so that you can handle keyboard events (or any other events) no matter which form is active.
Finally, there's system hooks. These should be used as little as often as they hook every message of a certain type in the OS. Inefficient or buggy code can degrade performance of the OS and all applications seriously, or even cause crashes if you don't handle errors correctly. You can find more information about using system hooks in C# by reading Using Hooks from C#[^].
In any case, you'll be using Windows messaging and catching notification messages like NM_KEYDOWN , which you can find the constants for in winuser.h in the Platform SDK. Experience with Windows messaging will be helpful.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
many thanks
i think i will try the IMessageFilter interface method.
for now i guess i will leave it polling every few seconds
|
|
|
|
|
Verdant123 wrote:
for now i guess i will leave it polling every few seconds
Why are you polling? Every message posted to the message queue for your application is filtered through the IMessageFilter implementation you added to your application using Application.AddMessageFilter . There's no polling necessary. For example, lets say I want to write a message to the console every time a key is pressed anywhere in my application:
public class KeyboardFilter : IMessageFilter
{
public bool PreFilterMessage(ref Message m)
{
if (m.Msg == 0x0100)
Console.WriteLine("Key down: " + m.WParam.ToString());
return false;
}
}
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
after re-reading the thread i guess i need a system hook...
the application need to catch changes to the cap/num/scroll locks from anywhere within windows
currently i poll the keyboard state every few seconds... to verify their values
|
|
|
|
|
I am trying to implement a piece of code in our app where a MouseHover event will trigger my code to construct a ToolTip object and populate it for display with the fields' value. (thanks for the tips, Heath!!!)
When nothing happened I went to the Mouse Event section of Help, copied the Mouse Event sample project, and pasted into a new solution. I hacked it to display all events and show a counter so I know when multiple events stack, thinking that the MouseMove was blocking the MouseHover from occuring.
What I found was that except for a rare instance where my keyboard tray was bumped, the events were very low to non-existant and it took about 1 minute 15 seconds to actually fire the MouseHover event on my corporate-managed machine!!!!
I could not find any setting anywhere that would actually affect this setting. Yet I've seen other posts here in my search for MouseHover discussions that people complained about it firing too frequently (5 ms) and wanting to slow it down.
Anyone have any ideas as to why my machine is so slow?
Suggestions welcome.
Thanks!!!
___________________
Forgoing antagonism and separation, one enters into the harmonious oneness of all things. Lao Tzu
|
|
|
|
|
You can change the setting with the tweakui powertoy.
top secret
|
|
|
|
|
leppie,
That was my first stop. Mouse tab exposes alot of things but not a timing for hover! Activation delay is the only setting that comes close, and that controls the xmouse hover behavior, not the normal mouse hover behavior.
Michael
___________________
Forgoing antagonism and separation, one enters into the harmonious oneness of all things. Lao Tzu
|
|
|
|
|
As leppie said, there are registry hacks you can perform and TeakUI is an easy way to do it.
I wanted to add that when you start outputing so much "junk" to the console or a TraceListener (like the DefaultTraceListener which is added by default), you incur serious performance penalties. Now, I doubt they would slow your system down THAT much (alone), but it's definitely not an accurate assessment. All that occurs synchronously. If you did it asynchronously, you'll incur a negligible performance hit but in enterprise applications this added logging feature is often worth it (see the Enterprise Application Instrumentation block on http://msdn.microsoft.com[^]).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I wan't doing any tracing nor was I outputing "junk".
___________________
Forgoing antagonism and separation, one enters into the harmonious oneness of all things. Lao Tzu
|
|
|
|
|
I have recently built an application that does Active Directory searches using DirectorySearcher. I have been asked to make it only search through a few, select OUs. is it possible to specify multiple OU's for a single DirectoryEntry? If so, How?
Yes, I am the highly suggestable type.
|
|
|
|