|
Before showing the dialog, set a property you'd add to the Form that dictates which button was clicked, like an enumeration for example (provides easy value checking to make sure an invalid enumeration wasn't passed in - see Enum.IsDefined ).
You could also use a generic prompt Form that has a username and password property that gets the text from their respective TextBox controls in the Form and, if ShowDialog returned DialogResult.OK handle the code in each one of the Click event handlers for the departmental Button s. If you put this in a terminating loop (for which you can always use break to break out of it if the credentials were authenticated successfully), the dialog could be shown multiple times - even using the same instance. Just don't forget to call Dispose when you're finally done with the Form to free system resources, which is necessary for modal dialogs (i.e., when calling Form.ShowDialog , which has to do with the underlying native resources used by the Form ).
There's many other ways you can do this. Personally, I would've invoked the call on some sort of broker since your code to check the database is most likely the same except for, perhaps, the connection string and the query string. If you passed an instance of an object configured with the write departmental connection and query strings, the prompt could simply call a single method and know whether or not the credentials are valid without even knowing which department is authenticating the credentials. After all, it's just a generic prompt dialog - why should it care about how to authenticate credentials. Just use the power of polymorphism. For instance, if you have an interface like so:
public interface IAuthenticator
{
bool Authenticate(string username, string password);
} ...and had a property that takes an instance of this interface (by declaring a property of Type IAuthenticator ), then when the user tries clicks OK (or Login, or whatever) you make sure this property isn't null and call Authenticate on the instance. Any code that wants to authenticate credentials merely implements this interface and provides a specific implementation of Authenticate . This is a good abstract design.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hi there,
I’m a long time programmer of C++ and a great fan of the Standard Template Library (STL). I’ve recently started working on C# and find that my beloved vector template doesn’t exist.
To get round the problem of creating a container of class objects I have to implement a whole new class that derives from System.Collections.CollectionBase for the container and then another class to deal with enumeration.
I realise that C# is strongly typed and that is the reason for creating your own containers but does anyone know how I could get round this to create a template class.
Cheers.
|
|
|
|
|
Wait for the next version of C# which includes generics (C# equiv. of templates)... I can hardly contain myself. That is one of the things I miss from C++.
--Colin Mackay--
EuroCPian Spring 2004 Get Together[^]
"You can have everything in life you want if you will just help enough other people get what they want." --Zig Ziglar
|
|
|
|
|
Thanks for the quick response.
Any idea when C#2.0 is due to be released?
|
|
|
|
|
|
Colin Angus Mackay wrote:
Wait for the next version of C# which includes generics (C# equiv. of templates)... I can hardly contain myself. That is one of the things I miss from C++.
Yeah me too. Actually, C# generics should be an improvement over our C++ templates; templates are nothing but "exalted macros" as I once read, with the compiler swapping values in at compile time. C# generics will have a JIT'd version of the actual generic code you write, and reuse that JIT'd code across all the types of that generic class.
Fun fun fun stuff. I just hope it will be released in the spring or summer this year.
The graveyards are filled with indispensible men.
|
|
|
|
|
Judah H. wrote:
Actually, C# generics should be an improvement over our C++ templates; templates are nothing but "exalted macros"
Not really.[^]
|
|
|
|
|
You can always use a generic collection or list class like ArrayList . It won't give you strongly-typed params (also, C# isn't strongly-typed, .NET is), but .NET is a true object-oriented framework and adding, for example, a Control to an ArrayList (which accepts Object s) is still a Control in the list. GetType (inheritted from Object ) will always return the right Type.
I realize this is probably not what you want and as Colin said, .NET 2.0 (due to release in late 2004 I would imagine, since the end of the year was the release date for 1.0 and 1.1) will include generics. I just wanted to point out that you don't need to worry about using appropriately Typed parameters. After all, when you extend the CollectionBase class and use either List or InnerList (and if you don't, then don't waste time by deriving from CollectionBase ), both of those are an instance of the same ArrayList .
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
You can also use Chris Sells' excellent CollectionGen in the meantime.
http://www.sellsbrothers.com/tools/#collectiongen
|
|
|
|
|
|
Hi,
my question is how I can make DataGrid whit Button in his title.
for example I want DataGrid whit print button.
I'm ready whit printing part but only a button misсing
thank's.
|
|
|
|
|
You can create a windows control and put a button+datagrid in it or subclass datagrid or datagridcolumn and start from there.
Mazy
"Art is life, life is life, but to lead life artistically is the art of life." Peter Altenberg
|
|
|
|
|
|
I dont want make DataGridColumnStyle whit buttons.
I want insert button in Caption on DataGrid .
Or mayby I have to make mine control DataGrid+Button //but I dont prefer it.
|
|
|
|
|
Is there any build in functionality to parse standard query string like this:
string1=hello+dear+friend%21&string2=otherdata+here+%25%26
Anything in the framework?
If not I'll write it, should I put it here as an article?
|
|
|
|
|
If you're trying to parse the query string from an ASP.NET page (like an .aspx file), you can use Request.QueryString or Request.Params (combination of POST and GET variables). When getting the value from the parameter dictionary, the values are automatically decoded.
Otherwise, there is many ways this can be parsed, like using String.Split with the &, the doing the same to split the key/value pairs using the = character. The HttpUtility class has both a UrlDecode and UrlEncode method, both overloaded.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thanx for the tip, but unfortunatly "UrlDecode" didn't work ok with some national characters like 'Ö'. So I wrote my own, and it works ok, using Uri.HexDecode.
|
|
|
|
|
The problem is simple:
I need to launch the default mail client (mailto: won't help here), open a new message and add some attachments to it. I need to do the same as when the user right-clicks a file and selects "Send to->Mail recipient". I need a solution that works for all mail clients and not just Outlook... and I need it quickly
|
|
|
|
|
|
Thanks, but your solution is not the answer which I wished.
|
|
|
|
|
This is what the items in the Send To menus of most application work. It uses MAPI, and that's the only way to talk to multiple mail clients because it's a set of interfaces (contracts) by which supporting clients communicate. If his solution isn't what you want, then read about MAPI and implement your own solution, but you won't find another abstract way; MAPI is the abstract API that Microsoft developed for this very purpose.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hi there,
I have started to learn C# last week for a project. I'm starting to get the philosophy of the language. It's not so hard.
I have a project to design that will run Excel 2003.
I have installed the Office 2003 extensions for VS .NET 2003.
For my project, I want to use the following Excel 2003 functionnalities:
- read/write Excel files (worksheets and workbooks) and also use the file import manager (for reading formatted text files, like excel does)
- Input data in a sheet (from a grid in the application)
- insert and retrieve data in sheets (to display them in a grid in the app)
- use Excel 2003 statistical functions
- display an Excel 2003 chart (this chart is calculated by excel, and the application displays the result in a dialog box for example)
- communicate with Excel WITHOUT the fact that excel is running
I wanna do all of these in a stand alone application while Office 2003 will be installed on the target machine.
This application won't RUN Excel!!! It will USE it!
I see that Excel 2003 can be accessed via C#.
Can any one tell me if it's possible to do these things?
And also, can you show me where I can get links with sample code to do basic calls to Excel 2003 functionalities and retrive the results via C#?
Thanks to all.
Best regards.
|
|
|
|
|
|
I'm trying to create my own "mp3 player" i c# using the Windows media player 9 control.
1. How do I create a playlist and add files to them?
2. How do you use the EndOfStream event?
/fleischen
|
|
|
|
|
I'm using Windows media player series 9
|
|
|
|