|
sonohamid wrote: can guide me in this regard
That is the job of your CS faculty at whatever school you are pursuing your CS degree from. Your tuition fees pay for those people to help you, make them help you.
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
|
|
|
|
|
Hi Everyone,
I am trying to make a program in Visual Studio using C# that would look and function like OSX's Automator, or the Java program Action(s) (http://app.jbbres.com/actions/). I am running into a bit of trouble, however, when trying to design the piece of the program where when I drop the selected action onto the box on the right half of the screen, it shows additional parameters to enter to tailor the action to the users' specific needs. I am thinking about using custom controls for my additional parameters, but I am unsure of which type of control would allow me to add custom controls within itself in such a way that they can be rearranged, and you can scroll through them if the controls extend beyond the edges of the window. Does anyone have any suggestions on what I should do?
Thanks,
Bobby
|
|
|
|
|
You may want to use a TableLayoutPanel or a FlowLayoutPanel .
/ravi
|
|
|
|
|
I made a class for Complex Numbers. I don't know what to write in the body of my override function.
public ComplexNumber(int real, int imagine)
{
Real = real;
Imagine = imagine;
}
public static ComplexNumber operator =(ComplexNumber a, ComplexNumber b)
{
return new ;
}
|
|
|
|
|
You cannot overload the = operation, since that's an assignment.
You CAN overload the == operation, which checks for equality and returns a True/False value (which you didn't specify the return type as boolean, BTW.)
Also, if you overload ==, you MCUH also overload !=.
|
|
|
|
|
I don't get it, still. Would you please give me an example by coding? Or can you complete my function as what you think it is right?
|
|
|
|
|
THe problem is I don't know what you're trying to do.
You CAN NOT overload the = operator since that's an assignment.
You CAN overload the == operator because it's a comparison operation.
BUT! Your code says you want to overload the assignment, which you CAN NOT do, and frankly there's no reason to!
So which is it???
|
|
|
|
|
Now I've got it. I thought there is a possibility to do so and now I can see there isn't. Thanks Dave
|
|
|
|
|
Are you trying to assign a to b here?
|
|
|
|
|
Yes, I want to do that but I've got that there is not such a possibility for the "=" operator, according to what Dave was trying to tell me.
|
|
|
|
|
I can't see much sense in trying to assign a ComplexNumber from two others like this. Do you really mean it to be the summation of the two complex numbers to form the new one? If so, you would override the + instead. Have a look here[^] for details.
|
|
|
|
|
No as I said before, I somehow misunderstood the whole thing. By the way thanks for your attention and guidance
|
|
|
|
|
You should typically implement a function Clone that will create a copy of your class. See MSDN documentation for IClonable .
public ComplexNumber Clone()
{
return new ComplexNumber { Real = this.Real, Imagine = this.Imagine };
}
By the way if you want to implement IClonable , it would be preferable to use explicit interface implementation so that your regular Clone function could returns a ComplexNumber (not sure if it still necessary with recent C# compiler).
Philippe Mori
|
|
|
|
|
I guess you are a C++ programmer (your user name further reinforces that impression). In C#, you cannot override assignment; a = b for a reference type will always assign a to exactly the same reference as b, and it's not possible to change this behaviour. (I think this is good because it means you know what a line is doing, whereas hiding copying in = requires you to know things about the class you're using.)
If you want to create copies of an object, you should implement ICloneable (but read this[^]), a copy method (e.g. public ComplexNumber Copy() { ... } ) and/or provide a copy constructor (i.e. a constructor that takes a ComplexNumber).
|
|
|
|
|
You're completely right. I should try that instead. And by the way, I know there is a function in C++ called atoi but It has another meaning to me. It actually represents my slogan in a short form which is the same with that function's name!
Thanks for your help
|
|
|
|
|
atoi_powered wrote: I made a class for Complex Numbers
IMO you got a wrong starting point, special number systems (such as complex) is something I would implement as a value type (i.e. a struct), not a class. That would make your "instances" immutable, and it would remove the problem of assignment.
|
|
|
|
|
That's right! Thanks
|
|
|
|
|
you're welcome.
|
|
|
|
|
Is there a way to add a variable to a variable name reference? I'm trying to cut out a rats nest of if statements. When I searched, I found this but it didn't look like what I want: http://www.windows-tech.info/1/ae8c74ec5a29a601.php[^]
This is a code snippet to get an idea of what I'm talking about:
foreach (Shift shift in shiftArr)
{
if (shift.shift == currentShift)
{
if (programResult == 0)
{
shift.NG_Count++;
tb_Shift_$(currentShift)_Count_NG = Convert.ToString(shift.NG_Count);
}
else
{
shift.good_Count++;
tb_Shift_$(currentShift)_Count_G = Convert.ToString(shift.G_Count);
}
}
}
|
|
|
|
|
Well, that looks almost like you are trying to create a list of Count_NG and Count_G items. Perhaps that might help.
|
|
|
|
|
I already have them in a struct according to shift. Is there a way to use the currentShift variable to add the data to the text box? Maybe I can add the tb variable name to the struct? But then that would be changing in name every shift and not fit in with the code to process the G/NG per shift. I have 3 different tb's, one for each shift, for each G/NG count. The struct looks like this:
[StructLayout(LayoutKind.Sequential)]
public class Shift
{
public char shift;
public int good_Count = 0;
public int NG_Count = 0;
}
|
|
|
|
|
You cannot modify a variable name at runtime to point to a different value.
Perhaps a List or a Dictionary would be a better choice.
|
|
|
|
|
So you have variables called tb_Shift_1_Count_NG, tb_Shift_2_Count_NG etc? Surely you could call them tb_Shift[1].Count_NG ... and have a list of Shift objects instead of a whole bunch of variables.
|
|
|
|
|
I'd love to implement it that way, except tb_Shift_A_Coung_NG and tb_Shift_B_Count_NG are the names for the textbox. I don't think I can use an array for those, can I?
|
|
|
|
|
You can have an array (or list) of textboxes. That's not a problem.
|
|
|
|