|
did you look at the example? When POST'ing data you must get the request stream - not the response stream - and write your post_data (without the preceeding "?") and write it to the request stream, then close it and get your response. This is shown in the example at the bottom of the page I linked.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
still not works..;( I use following code
string page = "http://www.umc.ua/misc/sendsms.php";
WebRequest myHttpWebRequest = WebRequest.Create(page);
string postData="network1=UMC&Phone1=5918658&Message=HellofromCSharp&sender_name=sn";
ASCIIEncoding encoding=new ASCIIEncoding();
byte[] byte1=encoding.GetBytes(postData);
// Set the content type of the data being posted.
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";
// Set the content length of the string being posted.
myHttpWebRequest.ContentLength=postData.Length;
Stream newStream=myHttpWebRequest.GetRequestStream();
newStream.Write(byte1,0,byte1.Length);
RES_text.Text = "The value of 'ContentLength' property after sending the data is {0}" + myHttpWebRequest.ContentLength.ToString();
// Close the Stream object.
newStream.Close();
And when I launch my app;ication and click button send, following exception occurs
************** Exception Text **************
System.Net.ProtocolViolationException: Cannot send a content-body with this verb-type.
www.xedom.com
|
|
|
|
|
even if I do this:
HttpWebRequest myHttpWebRequest = (HttpWebRequest )WebRequest.Create(@"http://www.umc.ua/misc/sendsms.php");
string postData="?network1=UMC&Phone1=5918658&Message=HellofromCSharp&sender_name=sn";
ASCIIEncoding encoding=new ASCIIEncoding();
byte[] byte1=encoding.GetBytes(postData);
// Set the content type of the data being posted.
myHttpWebRequest.ContentType="application/x-www-form-urlencoded";
// Set the content length of the string being posted.
myHttpWebRequest.ContentLength=postData.Length;
Stream newStream=myHttpWebRequest.GetRequestStream();
newStream.Write(byte1,0,byte1.Length);
RES_text.Text = "The value of 'ContentLength' property after sending the data is {0}" + myHttpWebRequest.ContentLength.ToString();
// Close the Stream object.
newStream.Close();
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Net.ProtocolViolationException: Cannot send a content-body with this verb-type.
at System.Net.HttpWebRequest.BeginGetRequestStream(AsyncCallback callback, Object state)
at System.Net.HttpWebRequest.GetRequestStream()
at sm.Form1.heath_Click(Object sender, EventArgs e) in c:\test projects\sm\form1.cs:line 281
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll
----------------------------------------
sm
Assembly Version: 1.0.1578.33862
Win32 Version: 1.0.1578.33862
CodeBase: file:///C:/Test%20Projects/sm/bin/Debug/sm.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
----------------------------------------
System.Drawing
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
System.Xml
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll
----------------------------------------
************** JIT Debugging **************
To enable just in time (JIT) debugging, the config file for this
application or machine (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitdebugging="true">
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the machine
rather than being handled by this dialog.
www.xedom.com
|
|
|
|
|
You could do some parsing. If it weren't for the pesky enclosing parentheses, your job would be a lot easier. I'm assuming the same structure isn't entered every time.
Regards,
Jeff Varszegi
EEEP!
|
|
|
|
|
ArrayList arr = new ArrayList();
ArrayList newArr = new ArrayList();
this.tbFormula.Text = this.tbFormula.Text.Replace(" ", "");
foreach (string accID in this.tbFormula.Text.Split('+', '-', '*', '/'))
{
string num = accID;
arr.Add(num);
}
for (int i = 0; i < arr.Count; i++)
{
num = arr[i].ToString();
if (num.Substring(0, 1).Equals("("))
newArr.Add(num.Remove(0, 1).ToString());
else if (num.Substring(num.Length - 2, 2).Equals("))"))
newArr.Add(num.Remove(num.Length - 1, 1).ToString());
else
newArr.Add(num.ToString());
}
for (int i = 0; i < newArr.Count; i++)
{
string num1 = newArr[i].ToString();
MessageBox.Show(num1.ToString());
}
Mr Duc Linh Nguyen
|
|
|
|
|
You can make this sort of approach a lot speedier. Notice that you didn't even give me a complete list of operators when you posted your question, but I'm glad that you seem to be happy...
Regards,
Jeff Varszegi
EEEP!
|
|
|
|
|
Or you can use String.Split(Char[], Int32) method. Which you pass +/*- as first paramter.
Mazy
"One who dives deep gets the pearls,the burning desire for realization brings the goal nearer." - Babuji
|
|
|
|
|
Regex re = new Regex(@"(?<token>[A-Z]{2,4}\(\s*\d+\s*,\s*\d+\s*\))");
|
|
|
|
|
I have the following string format(s) that I am trying to parse.
1-1-1
1-1-2
1-1-10
2-222-1
22-2-31
or
xx-xxx-xx
from which I would like to place xx into an ArrayList, xxx into an ArrayList2 and xx into an ArrayList3. The '-' are delimiters.
Any suggestion would deeply help.
Sincerely,
Tony D. Abel
Have a great coding day.
Regards,
Tony D. Abel
|
|
|
|
|
Simplest for you, although not fastest to execute, would be
char[] delimiters = new char[] {'-'};
string s;
string[] substrings;
substrings = s.Split(delimiters);
Regards,
Jeff Varszegi
|
|
|
|
|
Good day Jeff...
Again thanks for your input. This is what I came up with:
Int32 loadArrays = 0;
char[] delimiters = new char[] {'-'};
string[] substringsBookChapVerID = null;
string strBookChapVerID;
ArrayList chapterList = new ArrayList();
ArrayList verseList = new ArrayList();
///
/// Get the columns primary ID string from the row
///
foreach ( DataRow bibleRow in bibleDataset.Tables[BibleColumnName].Rows )
{
strBookChapVerID = (string) bibleRow[BibleColumnName];
substringsBookChapVerID = strBookChapVerID.Split( delimiters );
///
/// Get the book, chapter and verses substrings
///
foreach ( string number in substringsBookChapVerID )
{
///
/// Save the book, chapter and verses substrings for sorting
///
switch ( loadArrays )
{
case 0:
bookNumber = number;
loadArrays++;
break;
case 1:
if ( number == "0" )
{
loadArrays++;
break;
}
if ( chapterList.Count == 0 )
{ chapterList.Add( number );
loadArrays++;
break;
}
else if ( chapterList.IndexOf( number ) <= -1 )
{
chapterList.Add( number ); loadArrays++;
break;
}
loadArrays++;
break;
case 2:
if ( number.TrimEnd( ' ' ) == "0" )
{
loadArrays = 0;
break;
}
verseList.Add( number.TrimEnd( ' ' ) );
loadArrays = 0;
break;
} // end switch loadArrays
} // end number
} // end bibleRow
I hope you may be able to use this snippet in the future for some project
Have a great coding day.
Regards,
Tony D. Abel
|
|
|
|
|
I got string that was entered by user like this:
"(DC(112, 113) + DN(101, 102)) / CLDC(122, 123)......".
Please help me how to get exactly the "DC(112, 113) and DN(101, 102) and so on" string.
Thanks
Mr Duc Linh Nguyen
|
|
|
|
|
how can i create an array of controls (well, pointers to existing controls that i made on my windows form)
i want to be able to iterate through a collection of existing controls and modify their properties
r -€
|
|
|
|
|
as a side note, can i get an example of how to manage a pointer to a control like i want to have a pointer named pSelectedControl or something which will point to some text box or something
but i get an error something about unsafe blocks
r -€
|
|
|
|
|
So, you're a former C++ developer then?
First up, there's no need to create pointers as controls are reference types : a declaration
Control ctl; creates a reference to a control, not an actual control - it acts like a C++ pointer, in that you can change which actual object it points to, but you can't actually find out the address. Any class (created using the class keyword) in C# is a reference type.
The pointer syntax in C# is for when you want to do some direct bit manipulation of the object - when you want to perform unsafe casting or pointer arithmetic. C# forces you to say, using an unsafe block, when you want to do this - and you also have to pass the /unsafe switch to the compiler. Code compiled /unsafe can't be verified and must run with Full Trust - typically this means it must be copied to the local machine and run from there (this applies to the full Framework - the current version of the Compact Framework does not do security verification in this way).
Stability. What an interesting concept. -- Chris Maunder
|
|
|
|
|
Hi Roman. Well, can you just iterate over the Controls collection for your form?
|
|
|
|
|
You can either enumerate (or iterate) over the Controls collection property which already contains your controls that are displayed on a form, or add specific control references (as Mike mentioned, not "pointers").
If you only want to deal with controls of a specific type, for instance, then you could do something like this:
foreach (Control c in Controls)
{
if (c is Button)
{
Button b = (Button)c;
b.Text = "Click me!";
}
} When you enumerate a collection, list, or any other IEnumerable implementation, do not change the underlying enumerable otherwise an exception will be thrown. If you must change the collection or list or whatever, then iterate (the ol' for loop) over the collection or list instead and update your current index accordingly.
There have been times when I wanted to keep a separate list or array (which is a static list, BTW) of certain controls in my form so I could deal with them in a loop as well. You could easily do something like this:
Control[] controls = new Control[] {
this.textBox1,
this.textBox2,
thix.button5
};
foreach (Control c in controls)
for (int i=0; i<controls.Length; i++)
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hey all,
Just wondering if anyone out there has any insight on how to make the text in a Label go vertically, perpendicular to normal text... I can't figure it out and would sure appreciate any help!!
Tks!!!
|
|
|
|
|
You can't do it with a standard label control.
You need to use the Graphics.XXXX classes to draw text vertically.
|
|
|
|
|
you can achieve this by overriding OnPaint of System.Windows.Forms.Label .
Below code will help you in this direction.
protected override void OnPaint(PaintEventArgs e)<br />
{<br />
Graphics g=e.Graphics ;<br />
<br />
StringFormat stringFormat=new StringFormat ();<br />
stringFormat.Alignment =StringAlignment.Center ;<br />
stringFormat.Trimming =StringTrimming.None ;<br />
stringFormat.FormatFlags =StringFormatFlags.DirectionVertical ;<br />
Brush textBrush=new SolidBrush (this.ForeColor );<br />
Matrix storeState=g.Transform ;<br />
<br />
g.RotateTransform(0.0F, MatrixOrder.Append);<br />
g.TranslateTransform(100.0F, 0.0F, MatrixOrder.Append);<br />
g.DrawString (this.Text,this.Font ,textBrush,ClientRectangle ,stringFormat );<br />
g.Transform =storeState;<br />
<br />
}
Do revert back, whether you could achieve the functionality.
(tomorrow and day after tomorrow(28th and 29th) I am on leave)
Regards,
Jay.
|
|
|
|
|
Hello,
How do you append/set subitem within a row?
For example given this listview.
0 1 2 3 4 5
1 2 3 4
In row 2, I'd like to add "5" after the "4." Class ListView supports adding a new row via ListViewItem.
How do you append a new subitem to an exist row?
How do you set the entire row?
Thanks,
Kuphryn
|
|
|
|
|
Here is how I do what you are asking:
<br />
private System.Windows.Forms.ListView myList;
private System.Windows.Forms.ColumnHeader ItemNameCol;
private System.Windows.Forms.ColumnHeader SubItem1Col;<br />
private System.Windows.Forms.ColumnHeader SubItem2Col;<br />
private System.Windows.Forms.ColumnHeader SubItem3Col;<br />
<br />
ItemNameCol.Text = "Name";<br />
SubItem1Col.Text = "Col1";<br />
SubItem2Col.Text = "Col2";<br />
SubItem3Col.Text = "Col3";<br />
<br />
this.myList.Columns.AddRange(new System.Windows.Forms.ColumnHeader[]<br />
{<br />
this.ItemNameCol,<br />
this.SubItem1Col,<br />
this.SubItem2Col,<br />
this.SubItem3Col });<br />
<br />
<br />
ListViewItem item1 = new ListViewItem("ItemName",0);<br />
item1.SubItems.Add( "SubItem1Value" );<br />
item1.SubItems.Add( "SubItem2Value" );<br />
item1.SubItems.Add( "SubItem3Value" ); <br />
<br />
myList.Items.AddRange(new ListViewItem[]{item1});
<br />
Thats how I create a new ListView. To append to a listview, I do the following:
<br />
<br />
item1.SubItems.Add( "New Item Value" );
<br />
ColumnHeader newHeader = new ColumnHeader();
newHeader.Text = "New Header";
<br />
this.myList.Columns.Add(newHeader);
<br />
I hope this helps out. The above code is quite crude, considering I wrote it pretty fast. Let me know if you have any questions about it.
|
|
|
|
|
Okay. Thanks.
Your solution works great for inserting a new column to an existing list. I was thinking more in terms of inserting (setting) text to an existing column.
0 1 2 3 4 5
1 2 3 4 <-- insert text here. column already exists.
Kuphryn
|
|
|
|
|
ListViewItem item = lstProducts.Items.Add("Column1");//<-first
item.SubItems.Add("Column2");
item.SubItems.Add("Column3");
item.SubItems.Add("Column4");
item.SubItems.Add("Column5");
easy?
and if you want to update a previously created column
listName.Items[index].SubItems[subIndex].Text = "";
|
|
|
|
|
Nice!!!
You have to love the [] operator.
Thanks,
Kuphryn
|
|
|
|