|
Hi
I am invoking a simple web service from Windows form to do simple addition.
The client code is as follows, defined array of int and setting values based on number pressed in the form.
Want to pass the array as parm to web service. Getting error that the method in web service does not have compatible arguments. Can you pls help to see find the issue is.
Client Code
namespace Calculator
{
public partial class Form1 : Form
{
private int sumSoFar;
private int[] numcalc = new int[10];
public Form1()
{
InitializeComponent();
sumSoFar = 0;
for (int i = 0; i < 10; i++)
{
numcalc[i] = 0;
}
}
private void button0_Click(object sender, EventArgs e)
{
numcalc[0] = 0;
}
private void button1_Click(object sender, EventArgs e)
{
numcalc[1] = 1;
}
private void button2_Click(object sender, EventArgs e)
{
numcalc[2] = 2;
}
private void button3_Click(object sender, EventArgs e)
{
numcalc[3] = 3;
}
private void button4_Click(object sender, EventArgs e)
{
numcalc[4] = 4;
}
private void button5_Click(object sender, EventArgs e)
{
numcalc[5] = 5;
}
private void button6_Click(object sender, EventArgs e)
{
numcalc[6] = 6;
}
private void button7_Click(object sender, EventArgs e)
{
numcalc[7] = 7;
}
private void button8_Click(object sender, EventArgs e)
{
numcalc[8] = 8;
}
private void button9_Click(object sender, EventArgs e)
{
numcalc[9] = 9;
}
private void button13_Click(object sender, EventArgs e)
{
MathOps.Service1SoapClient MathOpsObj = new MathOps.Service1SoapClient() ;
sumSoFar = MathOpsObj.AddValues(numcalc);
<< err in this line, I thought numcalc is an array that can be passed as argument to web service, somehow getting error>>
}
}
}
Web service code
namespace MathOps
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
public int AddValues(int [] num)
{
int sumSoFar = 0;
for (int i = 0; i < 10; i++)
{
sumSoFar = sumSoFar + num[i];
}
return sumSoFar;
}
}
}
|
|
|
|
|
What is the exact error message you are getting?
I am guessing you to get an error mentioning
cannot convert from 'int[]' to 'MathOps.ArrayOfInt'
If this is the case try the following
MathOps.ArrayOfInt myClientArray = (MathOps.ArrayOfInt)numcalc;
sumSoFar = MathOpsObj.AddValues(myClientArray);
0100000101101110011001000111001011101001
modified 8-Oct-11 20:08pm.
|
|
|
|
|
Hi Andre
Thanks much for the reply. Sorry for the delay in my response. Had to go out of town. I googled the issue and found the same solution as you have suggested and it works like a charm.
Thanks very much.
|
|
|
|
|
There is any Merge Modules for Crystal Report 2008
|
|
|
|
|
Yes[^]?
Bastard Programmer from Hell
|
|
|
|
|
Eddy Vluggen wrote: Yes?
I've never seen a nullable yes before.
|
|
|
|
|
It's the top link on Google; the answer would be a Schrödinger's positive, since although it seems it's possible, the fact that there's a question implies that it's not.
In the latter case, the cat dies
Bastard Programmer from Hell
|
|
|
|
|
|
Hello all,
Situation:
A Win Form, having a panel in it.
size of the panel is bigger than the form itself.
scrollbars are enabled on form and are working fine to scroll through the panel.
http://img824.imageshack.us/img824/1388/panelv.png[^]
Requirement:
1. Enable dragging the panel to see the hidden portion of the panel.
2. Auto align the Scrollbars properly
Problem:
I wrote a code and it does drag the panel but not working so good. it often misposition the scrollbars, and abruptly change the dragged psition.
Help Required:
1. What am i doing wrong ?
2. Is there a better way ?
Here is my code:
public partial class Form1 : Form
{
Point clickPoint = new Point();
public Form1()
{
InitializeComponent();
panel1.Location = new Point(0, 0);
this.HorizontalScroll.SmallChange = 1;
this.VerticalScroll.SmallChange = 1;
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
if(e.Button == System.Windows.Forms.MouseButtons.Left)
clickPoint = e.Location;
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Left)
{
Point diff = new Point(
clickPoint.X - e.Location.X,
clickPoint.Y - e.Location.Y);
this.HorizontalScroll.Value =
Math.Min(Math.Max((this.HorizontalScroll.Value + diff.X),
this.HorizontalScroll.Minimum),
this.HorizontalScroll.Maximum);
this.VerticalScroll.Value =
Math.Min(Math.Max((this.VerticalScroll.Value + diff.Y),
this.VerticalScroll.Minimum),
this.VerticalScroll.Maximum);
}
}
}
And relocating the Panel is not what want:
Panel1.left += e.X - clickPoint.X;
Panel1.top += e.Y - clickPoint.Y;
modified 8-Oct-11 22:38pm.
|
|
|
|
|
A scrollbar's value is anywhere between its Minimum and its Maximum .
Assuming it is meant to fill the Form, a scrolling panel's Top is anywhere between Panel.Height-Form.ClientSize.Height and zero.
You need to linearly scale the one value to the other coordinate, setting the right Scrollbar.MinValue and Scrollbar.MaxValue should do it.
[EDIT]Fixed for sign trouble[/EDIT]
[EDIT2]Strike all that, it doesn't work like that; see my other post[/EDIT2]
modified 8-Oct-11 14:18pm.
|
|
|
|
|
Thanks for the prompt reply.
>> setting the right Scrollbar.MaxValue should do it.
I don't think so.
Scrollbar.MaxValue is decided automatically according to the size of form and the panel. Since I am not changing the panel/form size. Scrollbar.MaxValue has nothing to do with it.
Also while changing the Scrollbar's value, the code is taking care not to let it go beyond it's Min/Max limits.
>> scrolling panel's Top is anywhere between Panel.Height-Form.ClientSize.Height and zero.
scrolling panel's Location is fixed at (0,0).
modified 8-Oct-11 12:37pm.
|
|
|
|
|
Hi again,
I created a project and discovered how the AutoScroll works (hadn't used it in ages). I got it working just fine, assuming the Panel only holds disabled Controls (so MouseDown and MouseMove are sure to fire). This is the relevant code:
private int clickX;
private int clickY;
private void panel1_MouseDown(object sender, MouseEventArgs e) {
clickX=e.X+panel1.HorizontalScroll.Value;
clickY=e.Y+panel1.VerticalScroll.Value;
}
private void panel1_MouseMove(object sender, MouseEventArgs e) {
if (e.Button==MouseButtons.Left) {
int x=clickX-e.X;
if (x<panel1.HorizontalScroll.Minimum) x=panel1.HorizontalScroll.Minimum;
if (x>panel1.HorizontalScroll.Maximum) x=panel1.HorizontalScroll.Maximum;
panel1.HorizontalScroll.Value=x;
int y=clickY-e.Y;
if (y<panel1.VerticalScroll.Minimum) y=panel1.VerticalScroll.Minimum;
if (y>panel1.VerticalScroll.Maximum) y=panel1.VerticalScroll.Maximum;
panel1.VerticalScroll.Value=y;
}
}
It looks very much the same as yours, except for two things:
1. I don't like Math.Min/Math.Max much;
2. I'm not accumulating diff all the time, which you did.
Test: move the mouse over a significant distance, the panel should track that; then (button still down) follow a small circle, this should not do much at all.
[ADDED] I've created this little article[^] on the subject.[/ADDED]
modified 8-Oct-11 16:31pm.
|
|
|
|
|
Hello Luc
Thanks a lot for the explanation, the reference code and detailed article.
However, sadly this does not solve my problem.
In my case, Scrollbars are not associated with the panel. Infact, Panel does not have Scroll bars.
Since the size of the panel is already larger than the Form itself, Form's scrollbars (not Panel's) need to be manipulated.
See this : http://img824.imageshack.us/img824/1388/panelv.png
So, to get the clickX value, you dont need to add panel1.HorizontalScroll.Value to e.X .
In this case e.X itself will be clickX .
Can you please help some more to deal this problem ?
|
|
|
|
|
Abhshake wrote: Can you please help some more to deal this problem ?
I will investigate (Form too small is a particular case I will add to my article). However not right away, except for this:
my Panel is your Form, my content of the Panel (all the Labels) is your Panel.
The one difference is I click/drag the Panel (the outer, smaller thing), you click the Panel (the inner, large thing).
Therefore, yes, you need a different translation of the coordinates.
But then again, make sure not to accumulate changes, always compare with the start of the drag, not the previous moved position.
|
|
|
|
|
I have updated my article[^] to include a second major situation, which probably is what you need.
|
|
|
|
|
Ofcourse the absolute coordinates (MousePosition) !
I was stuck with this problem for a couple of days.
Thanks a lot Luc, you saved me.
|
|
|
|
|
You're welcome.
|
|
|
|
|
Can i have textfile templetes for Captcha with Random numbers
|
|
|
|
|
I suppose you can, but I'm guessing you don't.
|
|
|
|
|
Greetings Gurus,
Could you help please?
I am querying the registry to get a list of installed programs, this works.
I am trying to locate a value in the list of returned items, this doesn't work.
e.g.
RegistryKey rk = Registry.LocalMachine;
RegistryKey rkprograms = rk.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Uninstall");
foreach (string s in rkprograms.GetSubKeyNames())
{
int idx;
idx = s.IndexOf(".NET");
Console.WriteLine(idx);
{
Console.WriteLine(s);
}
Console.ReadKey(true);
}
but all "idx" values return "-1" i.e. not found.
Is my method faulty?
|
|
|
|
|
That looks OK, try stepping through it in debug and see what the values are.
|
|
|
|
|
I just ran your code on my XP machine and it works.
This to obvious, but I will ask it anyway.
Did you check the registry manually to see whether any .NET entries are present?
Also note that your code will not work on XP x64 and Vista (and higher).
I read about it here[^]. But your code would have crashed if this was the case.
0100000101101110011001000111001011101001
|
|
|
|
|
Your method of looking at the Uninstall keys is flawed. It is NOT a list of everything installed on the machine, 'cause, lets face it, not everything is uninstallable/repairable.
Use WMI and the System.Management namespace to query for all instances of the Win32_Product class. This will show you everything that's installed on the machine, not including patches. Those are listed under the Win32_QuickFixEngineering class.
|
|
|
|
|
Bad luck, he's the no-WMI-for-me guy you have encountered not so long ago!
|
|
|
|
|
Ah, sucks to be him then. I'd rather use the stuff that works and is easy to code up instead of blowing half my project time working on something that is very complex to replace it.
|
|
|
|