|
Error:
In my code I sent you it gives an error on the line:
foreach(XmlNode node in nodeList)
It says: The element list has changed. The enumeration operation failed to continue.
Thanks
|
|
|
|
|
As the error message is saying a list can not be changed during the iteration. Convert the XmlNodeList to an array and use this array to iterate through the nodes.
|
|
|
|
|
The xml has many many elements and subelements...
How can This be converted to array?
And may be I should not be in the loop to save?
Thanks
|
|
|
|
|
Build a new list or array containing the elements of the XmlNodeList.
List<XmlNode> myNodes = new List<XmlNode>(doc.GetElementsByTagName("ElementName"));
Then iterate through myNodes.
|
|
|
|
|
I guess I do not have to be in the loop when I add a new row?
Don't you think?
|
|
|
|
|
Yes that is correct. But sometimes the logic just needs to be done within a loop. If you can avoid doing all this within the loop -> do it.
|
|
|
|
|
I have modified the loop so that as soon as there is an addition to the xml, then save the file and then break; this way it comes out of the loop.
Question:
I can see the xml I added is in there, so I now try to remove it as follows:
Do you see what is wrong here because i get an error on line with ????? it says object reference not set to an instance of an object.
Not that this error does not always happen. It seems I have to close the file and then re-open it to work correctly. Is this the way it should be?
Thanks
private void LoadXMLRemove()
{
XmlDocument doc = new XmlDocument();
doc.Load(strPath);
// Retrieve all .
XmlNodeList nodeList = doc.GetElementsByTagName("mapKey");
foreach (XmlNode node in nodeList)
{
//?????
string strValue = node.ChildNodes[0].Value.ToString();
//???????
if (strValue.ToLower() == "0024007")
{
if (node.NextSibling.InnerXml.Trim() == "1")
{
string strMapValue = node.NextSibling.InnerXml.Trim();
//Remove element...
Debug.WriteLine("mapKey : " + strValue + " and mapValue : " + strMapValue + " removed.");
node.RemoveChild(node.FirstChild);
doc.Save(strPath);
break;
}
}
}
}
modified on Tuesday, October 13, 2009 8:05 AM
|
|
|
|
|
It seems that the node you doesn't have a childnode. Did you try to debug?
|
|
|
|
|
this error does not always happen. It seems I have to close the file and then re-open it to work correctly. Is this the way it should be?
Thanks
|
|
|
|
|
hi,
This list requires int
How is this code corrected please?
Thanks
|
|
|
|
|
|
Hi,
Any way, I am now using a string such that i transfer the xml into a string, then replace, delete what I want.
This seems to work.
Do you think it is ok to use a string as explained?
Thanks
|
|
|
|
|
Please note that I do not want to use xpath or linq or database. Just the xmlDocument for business reasons Why? I can understand you don't want to upgrade to .NET 3.5 to use LINQ, but SelectNodes (that uses XPath to get child nodes) is always been available in XmlDocument.
Said that, look at the XmlNode members, and you will find these two methods: AppendChild and RemoveChild.
|
|
|
|
|
hi,
i am using a grid that have its own print method.
i am using in my application this grid several times.
i want to print all the grids in 1 time (i can do grid1.print , grid2.print but than i can't preview them both in one time)
is there any way to make a virual pritner that all the prints will go to it and than i wiil be able to preview it once and see all the output(and select copies,and the real printer that i want to print to)?
thanks,
Samy
|
|
|
|
|
You could create a PrintDocument and print your grids one per page, or if they are small enough fit two or more onto the page. You will then be able to preview them all at once.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
how can a PrintDocument be used in this case?
my grid prints automatically to the default printer(i can change the printer name to another printer not the difault and it works but a PrintDocument dosn't have a "printer name" to pretend.
thanks,
Samy
|
|
|
|
|
If you have the source code for the grid you are using, then modify it (add a method that prints to a Graphics instance).
If you do not have the code then I would look for an alternative grid that gives you the source. There are plenty of them, just google for c# print datagridview.
Other than that I have no idea.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
Hello,
I want to change the maxvalue of the scrollbar in a treeview. So that I can see the whole treenode.
It is in winforms.
Can anyone help me to achieve this?
Thanks,
|
|
|
|
|
Do you mean that you cannot scroll to the bottom of the tree nodes (vertically)?
Could you post some code where this problem shows?
|
|
|
|
|
In a simple dialog
namespace projectname
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void FormDataChanged(object sender, EventArgs e)
{
blah.........
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
FormDataChanged(???????????, ?????????);
}
}
}
If I want to use the FormDataChanged function when I process the change in a listbox or a checkbox or whatever, what should I supply as the arguments. I suppose I have just dived in to C# and it's a bit different to what I am used to. I am not using either "sender" or "e" in the FormDataChanged function, I just want to know what is/should be in there, is it the item on the form itself that is the object, e.g. in the example above, is it the listbox itself, should it be "this" as the 1st parameter, and where does its EventArgs come from?
thanks for any help
If I put FormDataChanged(sender, e) that seems like it should be correct, but maybe I just need to find out a bit more about how the sender/args constructs work in more detail
|
|
|
|
|
In an event handler method, sender is the object that is generating the event, and e are event-specific arguments (for example a MouseClick event sends the mouse button that was clicked). If e is of type EventArgs , that means there are no specific argument for an event.
If you don't need these informations, you can easily ignore the parameters.
|
|
|
|
|
ldsdbomber wrote: private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
FormDataChanged(???????????, ?????????);
}
Hi,
you should avoid calling event handlers directly; there are some alternatives:
1.
some events can be fired by calling a specific method, such as button.PerformClick()
2.
you can create a method that contains the bulk of the event handling and call that directly, without needing any special parameters. Example (see Timer_Tick method):
private void checkbox1_CheckChanged(object sender, EventArgs e) {
somethingHasChanged(sender as Checkbox);
}
private void listbox1_SelectionChanged(object sender, EventArgs e) {
somethingHasChanged(sender as Listbox);
}
private void Timer_Tick(object sender, EventArgs e) {
somethingHasChanged(null);
}
private void somethingHasChanged(Control c) {
if (c!=null) Console.WriteLine("Something got changed relating to Control "+c.ToString());
...
}
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
Local announcement (Antwerp region): Lange Wapper? Neen!
|
|
|
|
|
Many thanks.
Do you have any opinions as to a good reference book that would include this kind of information, i.e do I want a book on C# itself, or is it Windows Forms, or Visual Studio specific?
|
|
|
|
|
Sorry, no, I don't generally recommend specific books. Some people prefer a specific author, others a publisher.
The books I own I have bought at various points in time, choosing from whatever collection was available at the nearest book store at that time.
I often like the Microsoft books, including the Step-by-Step series (which is tutorial, not reference).
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
Local announcement (Antwerp region): Lange Wapper? Neen!
|
|
|
|
|
Sorry, what I meant was not a specific book, but a specific class of book. i.e. does a general purpose C# book contain details about controls and event handlers, or is that specific to windows forms etc. And for handling and tokenising strings and dialog data, are there specific types of books for that or... I realise this question is a bit wishy washy!
|
|
|
|