|
Thank you very much, you are always a great help.
|
|
|
|
|
I'm doing this piece of code which should copy the non-null elements in btnArray to the tempArray. Afterwards it should copy the elements of tempArray back to btnArray in order to get rid of the null elements and restructure the array.
However i'm getting the following exception:
"Specified argument was out of the range of valid values."
"Parameter name: Index was out of range. Must be non-negative and less than the size of the collection."
I can ofcourse interpret this, but i can't see where i'm making the mistake, i even tried doing the calculations manually and they seem to fit.. or else i'm doing something wrong
If anyone could point out the mistake i'm making i'd be very thankful
private void CopyArray()<br />
{<br />
try<br />
{<br />
if(btnArray.Count > 0)<br />
{ <br />
int iCounter = 0;<br />
<br />
for (int iButtonIndex = btnArray.Count; iButtonIndex > 0; iButtonIndex--)<br />
{<br />
if (btnArray[iButtonIndex-1] != null)<br />
{<br />
tempArray[iCounter] = btnArray[iButtonIndex-1];<br />
iCounter++;<br />
} <br />
}<br />
<br />
for (int iButtonIndex = 0; iButtonIndex < tempArray.Count; iButtonIndex++)<br />
{<br />
btnArray[iButtonIndex] = tempArray[iButtonIndex];<br />
}<br />
}<br />
<br />
else<br />
{<br />
MessageBox.Show("(COPY) ARRAY IS EMPTY");<br />
}<br />
}<br />
<br />
catch(Exception ex)<br />
{<br />
MessageBox.Show("ERROR: " + ex.Message,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error,MessageBoxDefaultButton.Button1);<br />
}<br />
}
|
|
|
|
|
Where is tempArray created ? You'd do better to shove them into an arraylist, then call the ToArray method to get out an array that is the right size.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Can you show us the code where you declared
tempArray.
|
|
|
|
|
The tempArray and ButtonArray comes from here in the main form
<br />
ButtonArray btnArray;<br />
ButtonArray tempArray;<br />
<...><br />
private void Form1_Load(object sender, System.EventArgs e)<br />
{<br />
btnArray = new ButtonArray(this);<br />
tempArray = new ButtonArray(this);<br />
}<br />
Both ButtonArrays come from this class
using System;<br />
<br />
namespace ButtonArray<br />
{<br />
public class ButtonArray : System.Collections.CollectionBase<br />
{<br />
private readonly System.Windows.Forms.Form HostForm;<br />
<br />
public System.Windows.Forms.Button AddNewButton()<br />
{<br />
System.Windows.Forms.Button aButton = new System.Windows.Forms.Button();<br />
<br />
this.List.Add(aButton);<br />
<br />
HostForm.Controls.Add(aButton);<br />
<br />
aButton.Top = Count * 25;<br />
aButton.Left = 100;<br />
aButton.Tag = this.Count;<br />
aButton.Text = "Button " + this.Count.ToString();<br />
<br />
<br />
aButton.Click += new System.EventHandler(ClickHandler);<br />
<br />
return aButton;<br />
}<br />
public ButtonArray(System.Windows.Forms.Form host)<br />
{<br />
HostForm = host;<br />
this.AddNewButton();<br />
}<br />
<br />
public System.Windows.Forms.Button this [int Index]<br />
{<br />
get<br />
{<br />
return (System.Windows.Forms.Button) this.List[Index];<br />
}<br />
<br />
set<br />
{<br />
this.List[Index] = value;<br />
}<br />
}<br />
<br />
public void RemoveX(int iRemoveX)<br />
{<br />
if (this.Count > 0)<br />
{<br />
HostForm.Controls.Remove(this[iRemoveX-1]);<br />
this.List.RemoveAt(this.Count-1);<br />
}<br />
}<br />
<br />
public void RemoveButton()<br />
{<br />
if (this.Count > 0)<br />
{<br />
HostForm.Controls.Remove(this[this.Count -1]);<br />
this.List.RemoveAt(this.Count -1);<br />
}<br />
}<br />
<br />
public void FlushArray()<br />
{<br />
if (this.Count > 0)<br />
{<br />
for(int iButtonIndex = this.Count; iButtonIndex > 0; iButtonIndex--)<br />
{<br />
HostForm.Controls.Remove(this[iButtonIndex-1]);<br />
this.List.RemoveAt(iButtonIndex-1);<br />
}<br />
}<br />
}<br />
<br />
public void ClickHandler(Object sender, System.EventArgs e)<br />
{<br />
System.Windows.Forms.MessageBox.Show("You have clicked button " + <br />
((System.Windows.Forms.Button) sender).Tag.ToString());<br />
}<br />
}<br />
}
|
|
|
|
|
Hi,
I'm trying to develop a publisher-subscriber scenario using the loosely coupled events (LCE). I would like to see my subscribers able to filter on a particular publisher id.
After reading the good article written by Natty Gure (COM+ and .NET - A practical approach - Part 3),i learned how to set the publisher id filter. Unfortunatly, in that example, we don't use the filter and the id was empty.
My question is how to know/get the id of my publishers on which i want to filter?
Any help is welcome
Thanks.
- Frédéric -
|
|
|
|
|
Ok, so I’m a month into my first programming job, and I’ve run into a little problem, hopefully I’ll be able to get help here (its worked before for a school project).
I’m manipulating a SQL database in C# (using the latest 2005 releases of .NET and SQL Server, if that helps), and I’m having some problems updating the Tables correctly.
I’m manipulating a Form, which can have multiple versions. Each form has an ID (“Key”) and each version has an ID as well (“VersionKey”). One Key can relate to multiple VersionKeys, but each VersionKey is unique and only corresponds back to one Key.
The two important tables are organized as follows:
BaseTable:
*Key
Latest Version (the version to load on startup)
(Other nonimportant stuff)
VersionTable:
*VersionKey
Key
(Other nonimportant stuff)
My problem is in creating a new “version”. Here’s simplified code:
1: VersionRow dr = (VersionRow)myDataSet.VersionTable.NewRow();
(Assign the other entries in the row)
2: myDataSet.VersionTable.Rows.Add(dr);
3: myDataSet.Basetable.FindbyKey(currentKey).LatestVersion=dr.VersionKey;
4: (Save function)
#1 generates a new (unique)VersionKey, #2 adds the row to the set, and #3(should) assign the new row's versionkey to it's Key's latestVersion key so the newest version that we're making now will load at startup on the next run.
The problem (and I know the cause) is that the value given to dr.VersionKey is not necessarily the value it will be saved as in the database on the server. At the moment, if I start running off the current partially filled database, displaying dr.VersionKey in a messagebox gives me 15, but that row is saved to a number in the 70’s(it goes up one each time I save to the database). Ordinarily, this wouldn’t be a problem, but I want to set the Latest Version parameter, and I cannot set it with the wrong value that my database generates.
Any ideas on how to retrieve what primary key value the datarow was given?
-- modified at 15:48 Monday 19th September, 2005 (Aparrantly a college degree doesn't make me typo any less)
|
|
|
|
|
A few things:
While the VersionKey field is unique, your VersionTable really should have both Key and VersionKey as primary key fields.
It sounds like the database is on a remote servier somewhere, which means you could run into multi-user problems when the LatestVersion is updated. I think the best thing is to write a stored procedure directly at the database level; that way there's less traffic across the network, as well as less chance for multi-user contention.
Hope this helps.
Jim Stanley
|
|
|
|
|
Hello,
I override the Paint method for datagrid, and I am using this peice of code (numberFormatInfo object is defined):
if (rowNum < 4) {<br />
this.Format = "n";<br />
this.FormatInfo = numberFormatInfo;<br />
} else {<br />
this.Format = "c";<br />
this.FormatInfo = numberFormatInfo;<br />
}
But when the grid loads it constantly flickers, and other controls on the form do not load unless I move the form. However, if this portion ov the method is removed everything is fine. Anybody has any ideas, why this happening?
Thank you.
|
|
|
|
|
Without seeing the reset of your painting code, it's impossible to tell you what's going on.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
There is not much to my Paint code:
protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight) <br />
{ <br />
DataRowView view = (DataRowView) source.Current;<br />
System.Drawing.Color myColour = Color.White;<br />
numberFormatInfo = new NumberFormatInfo();<br />
numberFormatInfo.CurrencySymbol = "$";<br />
numberFormatInfo.NumberDecimalDigits = 0;<br />
numberFormatInfo.CurrencyDecimalDigits = 0;<br />
numberFormatInfo.CurrencyNegativePattern = 1;<br />
<br />
<br />
<br />
string[] str = view.DataView.Table.Rows[rowNum]["IndentLevel"].ToString().Split('~');<br />
<br />
<br />
<br />
<br />
if (str.Length == 1) {<br />
myColour = Color.Coral;<br />
} else if (str.Length == 2) {<br />
if (str[1] == "1" || str[1] == "4") {<br />
myColour = Color.PaleGoldenrod;<br />
} else if (str[1] == "7") {<br />
myColour = Color.Lavender;<br />
} else {<br />
myColour = Color.Wheat;<br />
}<br />
} else if (str.Length == 3) {<br />
myColour = Color.SeaShell;<br />
} else {<br />
myColour = Color.Thistle;<br />
}<br />
<br />
try{ <br />
backBrush = new SolidBrush(myColour); <br />
} <br />
catch(Exception) {} <br />
finally {<br />
base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight); <br />
} <br />
}
So, the comented out portion couses the datagrid to flicker.
|
|
|
|
|
At start I have a picturebox generated by Runtime, image is already initialized.
The name of the pbox is "picBoxDoubles_object1".
Now I have an ArrayList and want add this picturebox.
public void MovePicToDest(PicBoxDoubles pbd)<br />
{ <br />
ArrayList arr = new ArrayList(); <br />
arr.Add(pbd);<br />
<br />
<br />
arr.Clear(); <-----------<br />
}
If arr.Clear is executed, the picturebox disappears from the desktop. Is "pbd" not a parameter ByValue?
So it seems, that the real object was added not a copy. How can I solve this one?
|
|
|
|
|
Change the method to accept PictureBox type.
public void MovePicDest(PictureBox pb)
{
ArrayList arr = new ArrayList();
arr.Add(pb);
//Now if ArrayList.Clear is called; it should clear the arraylist and not remove your object.
arr.Clear();
}
|
|
|
|
|
PicBoxDoubles has Inheritance to PictureBox, so if I am change the parameter it still doesn't work.
|
|
|
|
|
What is the reason behind adding the picturebox to the ArrayList?
|
|
|
|
|
The application has two big Pictureboxes A and B.
"A" has many child objects(PictureBoxes) and if you click on one of these, they are copied to "B". Actually they are transfered during this problem. It should stay in A and make a copy to B.
|
|
|
|
|
I made a new object of this class and copied each attribute. This works, but the inherited Picturebox has more than 80 new attributes. Not a real good solution.
I need to know how to copy objects.
|
|
|
|
|
You could implement the IClonable interface in your PictureBox class. This interface is used to create a copy of an object, but you would still have to write the attribute copying code in there.
|
|
|
|
|
How can I pass to Interlocked.Exchange(...) an object of my own type?
In the code below both DoNothing and Interlocked.Exchange generate a compiler error.
using System;
using System.Threading;
class MyObject
{
}
class ReferenceTry
{
[STAThread]
static void Main(string[] args)
{
MyObject o = new MyObject();
MyObject oo;
DoNothing(ref o);
oo = (MyObject) Interlocked.Exchange(ref o, null);
// do something with oo
}
static void DoNothing(ref object o)
{
}
}
|
|
|
|
|
First, you never said what the error was.
Second, Interlocked.Exchange returns a value and takes two parameters, neither of which can be null . You're code isn't passing an Object into the function either.
someType2 = (SomeType)Interlocked.Exchange(ref someType1, (object)someType2);
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
So, the reference parameters do not work with subclasses?
Then Interlocked.Exchange(ref object, object) can't be used for anything?
Because if I make a variable
object o2 = (object) o;
and call
oo = (MyObject) Interlocked.Exchange(ref o2, null);
o = (MyObject) o2;
then I lost the atomicity (another thread can set o between Interlocked.Exchange and o = (MyObject) o2; ).
And if I declare o as object I must cast it every time I wish to use MyObject's members.
|
|
|
|
|
The first parameter can be passed as any type of object, but the second parameter MUST be passed as Object.
Interlocked.Exchange( someType1, CType(someType2, Object))
If you can convert null to an Object, you're in business.
Interlocked.Exchange Method (Object, Object)[^] docs on MSDN.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I have two images that I am ANDing into 1 image. I have also tried XOR'ing the images into 1.
The resulting image has both image 1 and 2 together, image 2 is kinda off colored, sometimes dark, and image 1 is fine.
my question is, how can i get my resulting image cleaner to where it can be presentable? Cant I, after anding them into 1 image, put the areas that are the same in all black, and the newer area's to be normal color? If so, i can then run code to make the black area's transparent so that it will fit over the original image cleaner (meaning no dark shading or off colors).
I wish I could post a screen shot to what im speaking of. The example I am using is found at http://www.codersource.net/csharp_image_processing_xor.aspx[^]
Any help would be appreciated.
Steve Welborn
Software Architect
|
|
|
|
|
Swelborn wrote:
If so, i can then run code to make the black area's transparent so that it will fit over the original image cleaner (meaning no dark shading or off colors).
Sure - just add a check in the code you're using that if one pixel is black, you just copy the other one. I don't think this will work too well tho, not all black areas are background, and not all background areas are black. One has to wonder just how clear you expect each image to be if you're merging them, and what this is being used for ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
I've searched in the forums, in the articles and even in the MSDN, but I'm not able to understand what the filealign option for the c# compiler does.
All that I know is that reduces the filesize a bit.
Other functions?
I wonder if Microsoft has included another useless option.
Tozzi is right: Gaia is getting rid of us. Do you feel the way you hate or do you hate the way you feel?
|
|
|
|