|
You need to write your own class that extends DataGridColumnStyle , then you instantiate that class and add it to a DataGridTableStyle that you add to DataGrid.TableStyles . This isn't a component you can just drag and drop, but you have to write your class and use it (like writing your own control and adding that to a form.
The article details how to do this and the sample source gives a thorough example of using the sample class. The link I gave you earlier shows a good example of how to use table styles to customize how the data is displayed; otherwise, only the base DataGridTextBoxColumn and DataGridBoolColumn are used.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
I am looking into extending an existing solution to perform a minor user management. It's for the following scenario:
I want to block a user's account entirely so that it can't login. As soon as the user checks in with his pass, his account (linked to that pass) has to be enabled again. But he should be able only to login to a specific computer. After he logs out of the computer again and he checks out of the room using his card his account should be blocked again.
From my view on this scenario I need two things:
- First I need to be able to enable/disable accounts using LDAP (Becaus its novell they use).
- Second I need to be able to manage the account so it has access to a computer. (I know how to do it by hand using the management tools, but not from the LDAP)
Anyone have any ideas on how I might be possible to do this? I think I found the solution to the first part of the problem. But not to the second part of the problem.
WM.
What about weapons of mass-construction?
|
|
|
|
|
Hello! I just wanted to ask a question: If I write a simple C# applicationm, for examle a "Hello World!" program, do I already use the .NET Framework?
Thanks in advance!
Have a nice day!
|
|
|
|
|
Yevgeny Efter wrote: If I write a simple C# applicationm, for examle a "Hello World!" program, do I already use the .NET Framework?
Yes
'A programmer is just a tool which converts caffeine into code'
|
|
|
|
|
To be more specific, C# is one of many language that compile to Intermediate Language, or IL. VB.NET is another example. All those compile to IL that then gets compiled on the fly by the Common Language Runtime (CLR).
The .NET Framework is a set of base class libraries (like Windows Forms, ASP.NET, etc.) and the CLR.
This (and a few more acronyms) allow languages to work together, like a Windows Forms application written in VB.NET can use a library written in C# because when both are compiled they are compiled to IL.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Im trying to get the mouse to perform a drag and drop using only the api. I can get the mouse to move around and perform clicks for me but the challenge is the drag and drop operation. im trying to store the previous state of the mouse (*ie when it was pressed down*) and then while the previous state==mousedown start dragging and holding it down, until i get a left mouse up message. but i cant get it to work correctly. here is the code im using
Input[] input = new Input[ 1 ];
input[0].type = INPUT.MOUSE;
input[0].mi.dx = x2;
input[0].mi.dy = y2;
//input[0].mi.dwFlags = MOUSEEVENTF.MOVE| MOUSEEVENTF.ABSOLUTE ;
if(prev.wParam==UserActivityHook.WM_LBUTTONDOWN)
{
input[0].mi.dwFlags =MOUSEEVENTF.LEFTDOWN| MOUSEEVENTF.ABSOLUTE;
SendInput( ( UInt32 ) input.Length, input, Marshal.SizeOf( input[ 0 ]) );
Console.WriteLine("test");
}
input[0].mi.dwFlags = MOUSEEVENTF.MOVE| MOUSEEVENTF.ABSOLUTE ;
SendInput( ( UInt32 ) input.Length, input, Marshal.SizeOf( input[ 0 ] ) );
Any ideas? i have been looking around online and will continue to. Thanks alot for your help
|
|
|
|
|
I know I can overload the same function to take specific parememters, but I'm looking for something a little more than that.
I want to return an array of ints, based on the number of ints passed into the function (really, I'm using this with objects).
public static int[] BuildArray( /* ACCEPT A MULTIPLE NUMBER OF INTS, WITHOUT BEING IN AN ARRAY ALREADY /* )
{
int[] ints = new ints[ /*NUMBER OF INTS PASSED INTO THE FUNCTION /* ];
int i = 0;
foreach( /* INT PASSED INTO THE FUNCTION */ )
ints[i] = /* EACH INT PASSED IN */;
i++;
}
return ints;
}
... The method accepts a multiple number of paremeters, all int. I want it to build an array of them, then pass that back out.
Is this possible? Like I said, I know I can overload the function a whole bunch of times like so:
public static int[] BuildArray(int i1, int i2)
{
// BUILD ARRAY AND RETURN IT
}
public static int[] BuildArray(int i1, i2, i3)
{
// BUILD ARRAY AND RETURN IT
}
public static int[] BuildArray(int i1, i2, i3, i4)
{
// BUILD ARRAY AND RETURN IT
}
... but that's not elegant, and I'll have to write a method for every freaking number of ints that could be passed in. Ugh.
Any solution here?
Thanks!
|
|
|
|
|
I think you have to use the params [^] keyword:
public static int[] BuildArray(params int[] numbers){
return numbers
}
Pompiedompiedom...
"..Commit yourself to quality from day one..it's better to do nothing at all than to do something badly.."
-- Mark McCormick
|
|
|
|
|
Works perfectly. Thank you very much.
One thing I noticed is that having the following two constructors threw an error:
public Hand(Card[] cards)
{
m_Hand = cards.Clone();
}
public Hand(params Card[] cards)
{
m_Hand = cards;
}
Caused a "redefinition" error.
The first allowed me to call it as such: Hand myHand = new Hand(cards); // REQUIRING A PREBUILT ARRAY OF CARDS
But did not allow me to do: Hand myHand = new Hand(card1, card2, card3);
The second will take a prebuild array of cards and work fine, or allow me pass in any number of cards and will automatically build the cards array from them.
I had to delete the first constructor, but that's fine. Works perfectly. Thank you.
|
|
|
|
|
How about a static helper method on your Hand class
class Hand
{
private Card[] cards;
public Hand(Card[] cards)
{
this.cards = cards;
}
public static Hand CreateFrom(params Card[] cards)
{
return new Hand(cards);
}
}
now you can do
Card [] myCards = new Card[]{...};
Hand myHand = new Hand(myCards);
or
Hand myHand = Hand.CreateFrom(Card1, Card2, Card3);
-- modified at 16:14 Saturday 5th November, 2005
|
|
|
|
|
J4amieC wrote: How about a static helper method on your Hand class
Why? Its already Card[] !
xacc-ide 0.0.99-preview7 now with C#, C, C++, IL, XML, Nemerle, IronPython, Perl, Caml, SML, Ruby, Flex, Yacc, Java, Javascript, Lua, Prolog and Boo highlighting support!
|
|
|
|
|
because he couldnt have 2 constructors one as "Card[] cards" and one as "params Card[] cards".
It was just a suggestion, call it syntactic sugar
|
|
|
|
|
The reason is that the methods or constructors would have the same signature and that, of course, isn't allowed for overloads. See the IL for a method defined using the params keyword in C#:
.method public hidebysig instance void Foo(object[] objects) cil managed
{
.param [1]
.custom instance void [mscorlib]System.ParamArrayAttribute::.ctor() = ( 01 00 00 00 )
.maxstack 8
IL_0000: nop
IL_0001: ret
} As you can see, the effect is achieved using an attribute but the parameter itself is just an object[] array.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
I am trying to implement a dynamic system tray icon in C#. There are tons of applications, like FreeRam XP and so forth, that have a system tray that updates with numbers or text. I was curious if anyone knew of a means for implementing such a system tray in C#. I am familiar with the notifyicon methodology in C# but I have never been able to find a means for doing it. Any ideas?
|
|
|
|
|
Depending how dynamic your icon would appear to be, you have a couple of choices. If you really only have a small handful of states - like some CD ripping or burning software I've seen - you could just have a collection of icons that show the different states and loop through them.
If you need more control and dynamic capabilities than that you must draw your own icons. You should find several good articles here on Code Project about drawing icons that should help you.
So, consider whether you need only a few icons to rotate or otherwise show state (like something's open, closed, or not present) and use a static list of icons or draw your own. You don't even need to save them to a file - just cache them in a list in memory and assign them to NotifyIcon.Icon .
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Thanks for the reply. I did an intensive search and found a posting on CodeProject.com from a couple of years ago, describing how to accomplish this task. Below is the code snippet:
Bitmap i = new Bitmap(16, 16);
Graphics g = Graphics.FromImage(i);
SolidBrush blackBrush = new SolidBrush(Color.Black);
g.DrawString(currentTemp,this.Font,blackBrush,new Point(0));
g.Dispose();
notifyIcon1.Icon = Icon.FromHandle(i.GetHicon());
|
|
|
|
|
You might consider using the using statement for cleaner and safer code to dispose objects because it compiles such that the call to IDisposable.Dispose is in the finally block of a try/finally :
Bitmap i = new Bitmap(16, 16);<br />
using (Graphics g = Graphics.FromImage(i))<br />
{<br />
g.DrawString(currentTemp, this.Font, Brushes.Black, new Point(0, 0));<br />
}<br />
notifyIcon1.Icon = Icon.FromHandle(h.GetHicon()); <br />
<br />
This posting is provided "AS IS" with no warranties, and confers no rights.<br />
<br />
Software Design Engineer<br />
Developer Division Customer Product-lifecycle Experience<br />
<span>Microsoft</span><br />
<br />
[<a href="http://www.codeproject.com/script/articles/list_articles.asp?userid=46969">My Articles</a>] [<a href="http://blogs.msdn.com/heaths/">My Blog</a>]
|
|
|
|
|
Hi there.
I am having problems making a small program I am making print out.
I put some Label controls on a form and also drew a line on the form. Then the plan is to make the program print out the text in the Labels and also the line drawn on the form.
The print_selected method is executed when the user selects Print from a menu. I can´t even get the PrintDialog box to appear
This is what I did so far:
private void print_selected (object sender, EventArgs ea)
{
PrintDocument prndoc = new PrintDocument();
PrintDialog prndlg = new PrintDialog();
prndlg.Document = prndoc;
if (prndlg.ShowDialog() ==DialogResult.OK)
{
prndoc.DocumentName ="Trial";
prndoc.PrintPage += new PrintPageEventHandler(OnPrintPage);
}
prndoc.Print();
}
void OnPrintPage(object obj, PrintPageEventArgs ppea)
{
Graphics grfx = ppea.Graphics;
// I don´t know what code to put here so that the line and also the text
//contained in the Label controls gets printed out.
}
Can someone please help me make the program print out what I want it to print out?
Regards,
FJ
|
|
|
|
|
To get the print dialog you need to use the PrintDialog class documented at http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwindowsformsprintdialogclasstopic.asp[^]. If you want to show this before printing then your menu handler should show it and continue printing. The documentation has an example.
The code you need to put in there is just like you would draw on a form - use the Graphics object to draw lines, etc. You cannot, however, just print out the controls like you see them without a lot of work (there are tutorials on this site if you search). If you just want to print the text, however, then you can use the coordinates of your label controls and print the text in those label controls like so:
Graphics g = ppea.Graphics;
g.DrawString(label1.Text, label1.Font, new SolidBrush(label1.ForeColor), (RectangleF)label1.Bounds); It's a basic example but hopefully shows you how to print the text. If you wanted to the show the label or any other control as you see it on screen you should search for articles using keywords like "print controls" or something similar on this site using the article search at the top of every page on this site right below the logo.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Hi, thanks for your answer.
So to print the other labels I would do like this?:
Graphics g = ppea.Graphics;
g.DrawString(label1.Text, label1.Font, new SolidBrush(label1.ForeColor), (RectangleF)label1.Bounds);
g.DrawString(label2.Text, label2.Font, new SolidBrush(label2.ForeColor), (RectangleF)label2.Bounds); //and so forth?
What about the line/lines and curves that I may want to print out also? Do I code like: g.DrawLine(. . . . )and give the coordinates for each line/curve that I want to draw?
The program I am trying to make will have in some instances lines as well as label controls and in other instances it will have label controls and lines and curves. How do I go about coding for those scenarios? Do I need to code especially (and in a different way) for the scenario where the lines and curves need to be printed as well as the label controls?
I was hoping that to code printing would not be that complicated. I think I get the picture now. Thank you for your help Any further suggestions are very much welcomed if you have the time.
Best regards,
FJ
|
|
|
|
|
For your curves and other lines you do the same thing you're already doing. I recommend refactoring that code into a new method that takes at least a Graphics object as a parameter. Then, you can call that method from your OnPaint override (or Paint event handler, but overriding virtual or abstract methods is faster than even handlers and you have more control) and your printing override (or even handler). This makes your code more maintainable since the same code is used over and any changes affect both painting on screen and to a printer device.
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
I am having problems making my app print multiple pages. I was hoping you could help me. This is what I have done:
private void button1_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
PrintDialog dlg = new PrintDialog();
dlg.Document = pd;
dlg.ShowDialog();
pd.DocumentName = "HasMorePages";
dlg.PrinterSettings.FromPage = 1;
dlg.PrinterSettings.ToPage = 2;
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
iPageNumber = 1;
pd.Print();
}
public void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
Graphics g = ev.Graphics;
g.DrawString(label1.Text, label1.Font, new SolidBrush(label1.ForeColor),
256, 32);
g.DrawString(label2.Text, label2.Font, new SolidBrush(label2.ForeColor),
256, 1400);
ev.HasMorePages = iPageNumber < iNumberPages;
iPageNumber += 1;
}//pd_PrintPage
This code prints out label1 but not label2. If I change the y-coordinates of label2 to 140 it gets printed but on the first page. I would like to be able to make my app print label1 on the first page and label2 on the second page at coordinates of my choosing. Can you please spare the time to help me? How can I make label2 get printed on page 2.
Thank you and happy new year,
FJ
|
|
|
|
|
The PrintPageEventArgs.PageBounds is the bound for each page so it does not continue on. If PrintPageEventArgs.HasMorePages is not sufficient enough you'll have to keep track of pages printed yourself and check against that. You also shouldn't have your event handler public.
private int iPageNumber = 1;
private void pd_PrintPage(object sender, PrintPageEventArgs e)
{
Graphics g = e.Graphics;
if (iPageNumber == 1)
{
}
else if (iPageNumber == 2)
{
}
e.HasMorePages = iPageNumber == 1;
iPageNumber++;
}
This posting is provided "AS IS" with no warranties, and confers no rights.
Software Design Engineer
Developer Division Customer Product-lifecycle Experience
Microsoft
[My Articles] [My Blog]
|
|
|
|
|
Hi, thanks for your answer.
This is a very elegant and nice solution, so obvious once I see it and that is the hallmark of good soulutions.
Thanks a lot and a happy new year
FJ
|
|
|
|
|
Hi there.
Thanks very much for your help. I did encounter something strange though when I did what you suggested.
When I print out what comes out of the printer is not the same as what I see on screen. If I see on the screen "27" or "3)" what gets printed is only the first character, "2" or "3". Why is that? The lines and curves I want to print out get printed out the way I want them to.
Thank you,
FJ
|
|
|
|
|