public class mystruct
public uint u1;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 30)]
public string arr1;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 15)]
public string arr2;
public uint u2;
Internally testfunc is implementing arrptr as pointer to array of structures.
My query is what should be declaration of this function. Should i pass class variable by ref, or IntPtr or ???
Then, take a look at the docs for information on the Marshal.StructureToPtr and Marshal.PtrToStructure methods. You'll need to allow for unsafe code using the /unsafe command-line switch, or turning on the Allow Unsafe Code option in your project to use StructureToPtr.
Also, you should add [StructLayout(LayoutKind.Sequential)] to your mystruct definition.
1. How do you access the serial port on a c# project, using windows forms?
2. How do you do access the serial port on an asp.net project? The port is on the client side, not the server. Does it has to be done with activex, if so, how?
pedropj wrote: 2. How do you do access the serial port on an asp.net project? The port is on the client side, not the server. Does it has to be done with activex, if so, how?
You don't have to use ActiveX, though. If you want to stick with .NET, you can use smart clients. See an article I wrote a long time back on another site (that's being transcribed and updated for this site) here: User Controls for Windows and the Web[^].
Even smart clients can be hosted in pages delivered by any web browser - even local pages served-up in your browser right off your hard drive. It's just that Internet Explorer (Mozilla doesn't do this...yet) is hosting the control. There is some documentation about this in the MSDN Library as well (under the .NET Framework SDK Documentation - see "Deployment").
I am new to c# and i need your help
I want to create three forms in c# project and then nevigate through these forms by clicking the next and back buttons.
I have created a c# proj and then added two more forms i have created two buttons next and back on each form.Form3 also contains a Finish Button.
Now i want that when i click on the next button of firm1 it should load the Form2 and by clicking the next button of Form2 it should load Form3.
By clicking the back button of Form3 it should load the form2 and so on as we have seen during installation a s/w.
I'm not sure if it's the best way. But I do it like this.
In form1 (which you raise form2) pass form1 as a constructor parameter or as a public variable to it. then you can access form1 in form2 thruogh this. something like
form2 f2 = new form2(form1); // in form1
public form2(system.Windows.Form f) // form 2 constructor
f1 = f;
form2.Hide(); f1.Show(); // Whenever you wanna go back
Perhaps a better way is to take a lesson from the way property pages work within a property sheet in Windows (and a lot of other implementations I've seen): instead of using multiple forms, use one form with the Previous and Next buttons (or whatever you want to call them), along with a collection of user controls that represent the property pages. You can code the logic in the form to add and remove the controls when you click the Previous or Next buttons by adding and removing them from the container (perhaps use a Panel above the buttons). The buttons could also be disabled or hidden when you reach the beginning or the end of the collection of pages.
There's many ways to evolve this method, but it's pretty much done the same way in Windows. If you've done any Win32 programming, take a look at the documentation for the IPropertyPage interface. There's links to other helpful documentation in there. You could use a similar mechanism where the controls you will host must implement a similar interface in order for them to communicate with the property sheet (same goes for a Wizard, actually, like you're doing), or for the property sheet to abstractly communicate with them (through this IPropertyPage-like interface) without knowing specific types.
There should be several articles here on CP that outline this approach. Just search for "wizard" or "property pages" or something like that. You could also try google to find some examples.
It worked to some extend but i still want to some thing
Suppose that currently i am on form2 which u call f2 and i press the back button it should move to the currently running form1 but how to refer to the
currentl running form1.
Because in Main method
I am trying to implement cut copy and paste in my application. I have the cut,copy and paste buttons on a toolbar and they are always visible. I have tried hooking the Controls Enter event but this solves only half the problem. I also need to be able to tell if text is being highlighted.
This is not on a menu so I cannot just hook the menu_click event
Instead of using the TextBox control, I subclassed the RichTextBox to mimic an "Enhanced" TextBox.
In the subclass set the Multiline property to false, and the height to 20. This essentialy makes the RichTextBox look like TextBox.
Now you can hook into the SelectionChanged event and check the Can<xxx> properties to enable/disable your buttons. Call the SelectionChanged handler from the Enter event for the object to handle the initial setup.
A good way is to take advantage that WM_COMMAND messages are passed to a control's parent (keep in mind that all controls in System.Windows.Forms are just wrapper classes for Windows Common Controls). If you override WndProc in your main form, all child controls - as well as their children, and so forth - will send you a WM_COMMAND message that you can mask for the EN_SETFOCUS or EN_SELCHANGE notification message. You then use the Message.HWnd property to get the Window handle (HWND) and use Control.FromChildHandle to get the control. You can then cast it to a TextBoxBase (base class for both TextBox and RichTextBox) and call the Cut, Copy, or Paste methods on it.
I got a great idea. It is a little bit cheesy, but it appears that Microshnizzle does it this way alot, so if they can do it, so can we! Make ONE function for each of the following handlers and subscribe all of your text boxes to it.
1. Mouse UP
2. Key press (interested in the left and right arrows)
When either of these events is fired, check the Selection for the Textbox (Textbox.SelectionLength). If the selection Length is NOT zero, then Enable your cut and copy buttons, if the length is 0, nothing to copy, so Disable the cut and copy buttons!
Hi, I would like to know how is it possible to see:
1. if a specific application is being installed, and
2. how could i get the path to the executable.
Edit: i found out, i will have to read the machine's registry, in order to be able to get the path to an application. Could someone post an example of how i can reach the application's directory by accessing the registry?
It depends on the installer technology. If the app installer is a Windows Installer package, you can use WMI to not only list the apps installed, but to watch when new ones are installed (add an event and hookup code to it). See the System.Mananagement namespace for information. There are also a few articles that talk about the WMI integration with VS.NET on this site, too, though nothing specific to your problem.
Also with Windows installer, each component SHOULD (and often does) have a key path that represents the executable. If you know the component ID (a GUID) you can get its key path.
For other installer technologies, it's specific to the implementation and often times will not be possible. You could also use a FileSystemWatcher but this could be expensive as you'd have to watch a lot of files, or take a snapshot of the system before and after (a system diff), but that's even more expensive.
I want to make a Modeless Dialog box that will pop up and allow processing to continue in the main window. The dialog box is only displaying some information and just needs an OK button that will destroy it. If I use .Show() instead of .ShowDialog() to make it modeless, processing continues, however, the dialog does not redraw and it goes permamently not responding with an hourglass.
What is the proper way to do a modeless dialog box?
I apologize if this has been answered here before but I found nothing browsing through this forum. Through a bit of web search I found an article from a MS Support guy that the control NumericUpDown does not support the XP/System theme by default and you actually have to code your own which ticks me off a bit since I do not have the knowledge to do so. Does anyone want to share either some code example or an url where this is featured, I've searched for days but I have found nada.
Read the Theme API documentation - it's really not too hard to use. Since the topic isn't actually called "Theme API", search for this function and sync your TOC to see the entire topic: OpenThemeData.
I think I saw some here on CP about using this, but never forget google.
See the NotifyIcon component documentation. There are also a few articles on the subject here on the CP site. Your application needs only one static Main method (an application should have only one entry point to execute the application) and use the NotifyIcon to add an icon to the system tray.