|
I've got a main form with a status bar that contains a progress control. I've implemented a search dialog as well as a find next command.
When the search command is selected, A form is presented for the search criteria. After OK is clicked, I close the search form and proceed to call a method that implements the search and periodically updates the value of the progress control. For some reason, after about three seconds, the maximize button on the main form title bar becomes disabled and the progress control stops updating - there's no error or anything, it just stops redrawing. When the search is complete, the progress bar updates itself and displays properly (at 100%) and the maximize button returns to its enabled state.
When the find next command is selected, the progress bar is updated properly and DOES NOT exhibit the problem above - the progress bar makes its way all the way up to 100% without a problem (and the maximize button issue doesn't happen).
The only difference between the two methods is that the first one brings up a form for data entry and closes it. After that, the two methods are identical - they both call another method that does the searching.
My first guess was that this has to do with garbage collection because of the data entry form, which would explain the delay of three seconds or so. But why this would affect the main form like it does is beyond me.
Has anyone run into something like this? It's driving me nuts.
Thanks,
Cheers,
Drew.
|
|
|
|
|
|
I didn't think that would matter, but I'll give it a try.
Thanks leppie!
Cheers,
Drew.
|
|
|
|
|
Hi,
I need to test a string with regex, but i don't know how i need to build up the pattern. A valid string can contain every letter a-z and somewhere in the middle a '-'. Please help me with solving this problem.
Thanks
Frank
|
|
|
|
|
You specify 'can' and not 'must' so I believe that is correct. You dont specify whether there can be multiple '-' 's. I assume you can, and they can follow one another.
@"[a-z]([a-z\-]*[a-z])*"
If you must have only 1, which contradicts 'can':
@"[a-z]+\-[a-z]+"
xacc.ide-0.1-rc2 released! Download and screenshots
-- modified at 16:52 Friday 11th November, 2005
|
|
|
|
|
sorry i forgot first ther must be at least one letter and after this it can be a '-' and ther must be at least one letter after it.
Thanks for help so far...
|
|
|
|
|
Hello,
I have a dataset that has a single table, with 20 columns let's say.
What I want is to create a new table with the first 10 columns of the bigger table. The reason why, is I want to use XmlWrite method on my dataset, but only to dispaly 10 columns. Any ideas?
Thank you.
|
|
|
|
|
I will share a class that I use in these cases. Note that this class is used as part of a select query that I normally use in my code, so you may modify as needed.
<br />
public class SelectCommand<br />
{<br />
StringCollection columnNames = new StringCollection();<br />
public SelectCommand(string selectQuery)<br />
{<br />
string[] tmp = selectQuery.Split(new char[]{','});<br />
for (int i = 0; i < tmp.Length; i++)<br />
columnNames.Add(tmp[i].Trim());<br />
}<br />
<br />
public DataTable ExecuteSelect(DataTable sourceTable)<br />
{<br />
DataTable dt = new DataTable(sourceTable.TableName);<br />
<br />
DataColumn newCol;<br />
foreach (DataColumn col in sourceTable.Columns)<br />
{<br />
if (columnNames.Contains(col.ColumnName))<br />
{<br />
newCol = new DataColumn(col.ColumnName, col.DataType, col.Expression);<br />
dt.Columns.Add(newCol);<br />
} <br />
}<br />
<br />
DataRow newRow;<br />
foreach (DataRow row in sourceTable.Rows)<br />
{<br />
newRow = dt.NewRow();<br />
foreach (string colName in columnNames)<br />
{<br />
newRow[colName] = row[colName];<br />
}<br />
dt.Rows.Add(newRow);<br />
}<br />
<br />
return dt;<br />
}<br />
}<br />
|
|
|
|
|
Hello everyone,
I tried to rename mapped drive in c# but did't find the solution.
Explain me please how can I do that in c#.
I have found some vbscript example, but i need exactly c#
Thanks
|
|
|
|
|
Am I not using the binary formatter correctly?
I've been doing some tests, with this code:
BinaryFormatter bf=new BinaryFormatter();
FileStream fs=new FileStream("foo.bin", FileMode.Create);
bf.Serialize(fs, dt);
fs.Close();
where "dt" is a DataTable. For stress testing, I have table with some 150,000 records. It takes about 80MB when the table is loaded.
When I run the above code, the memory utilization goes through the roof (in fact, it ultimately crashes with out of memory exception).
1) why is running out memory?
2) what is this thing doing internally? If I'm serializing to a stream, it seems like it should behave like a stream--chunks of data, not all this in-memory processing.
3) why is the resulting file so darn big? BinaryFormatter seems to be a major misconception, except that the data itself is serialized in binary. However, all the tags and header stuff etc is all plain text!
Has anyone written a replacement for what appears to be a real POS?
Marc
VS2005 Tips & Tricks -- contributions welcome!
|
|
|
|
|
XmlSerialization would probably be a better choice for DataSet/Table's.
Marc Clifton wrote: why is the resulting file so darn big? BinaryFormatter seems to be a major misconception, except that the data itself is serialized in binary. However, all the tags and header stuff etc is all plain text!
Use a compressor to compress the data. Binary serialized normally contains duplicated data (why? i dunno, perhaps there is an option for that).
xacc.ide-0.1-rc2 released! Download and screenshots
|
|
|
|
|
The BinaryFormatter is misleading. It includes version and other information which meant that in my tests it used 256 bytes to store a bool. I immediately chucked it.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
Hi,
I am fairly new at C# and Windows programming. I am a bit confused why the TreeView has a ContextMenu property when you can not really use ContextMenu_Popup Handler when it does not accurately give you the mouse coordinates. OK I am not being clear, take this code for example:
private void ContextMenu_Popup(object sender, System.EventArgs e)
{
TreeNode node = TreeView.GetNodeAt(PointToClient(Cursor.Position)) as TreeNode;
if (node == null)
return;
ContextMenu.MenuItems.Clear();
ContextMenu.MenuItems.Add(node.Text);
}
When right clicking on a node this pops up the context menu but the node that it displays is (on my app) 80 pixels lower.
On looking through the forums I see that people tend to use something more like this:
private void TreeView_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
TreeNode node = TreeView.GetNodeAt(e.X, e.Y) as TreeNode;
if (node == null)
return;
ContextMenu.MenuItems.Clear();
ContextMenu.MenuItems.Add(node.Text);
}
}
My questions is why even have a ContextMenu property if it does not work. I am probably just missing something obvious. But thanks anyway to any who reply.
Sean
|
|
|
|
|
Sorry, I think I just figured it out. I still have to have the ContextMenu set in order for it to display. So let me rephrase the question. Why do I have to do the processing in MouseUp rather than in Popup? Is there a way to get the accurate mouse information from the ContextMenu_Popup method?
[UPDATE]
Never mind, I broke it again somehow using the MouseUp so I have no clue what I am doing anymore or what I am asking or what I am thinking or anything. I think I need to step away from the computer for a bit...
Sean
-- modified at 14:48 Friday 11th November, 2005
|
|
|
|
|
Your first attempt looked the best. All that you were doing wrong was converting the point to the client coordinates of the Form rather than the client coordinates of the TreeView. I'm guessing the 80 pixels off the mark was because your tree view is 80 pixels from the top of the form.
Point rawCursorPosition = Cursor.Position;
Point clientCursorPosition = TreeView.PointToClient(rawCursorPosition);
TreeNode node = TreeView.GetNodeAt(clientCursorPosition) as TreeNode;
Does this help?
My: Blog | Photos
"Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucious
|
|
|
|
|
Yes it did help. Thank you very much. One question I do have though is, is it better to use the MouseDown/MouseUp events or the Context_Popup event for context menus? Most examples I see seem to use the MouseDown (which I find a bit odd since most Windows Apps use MouseUp...Windows Explorer for example) Yet I would think the Popup would offer the least overhead... I don't know, just curious which is why I asked.
Thank you once again.
Sean
-- modified at 12:34 Monday 14th November, 2005
|
|
|
|
|
|
|
Hi.
I was just playing around but got into some trouble.
I created a form (f1) with a button. I want that when the button is clicked that another form (f2) springs up with some control on it (a label or another button) and I also want to be able to draw a string or a line on that form (f2). How do I do that? The line I draw is always on f1 but not on f2? I had no problem putting a Label control on f2 but drawing a simple line on f2 just beats me!
Can someone please help me?
Thanks,
FJ
|
|
|
|
|
Override the OnPaint method of f2 and draw your line there.
|
|
|
|
|
Thanks for answering but I am not following you
This is what I did when the button on f1 is clicked:
private void button1_Click(object sender, EventArgs e)
{
Form f2 = new Form();
f2.Show();
Label l = new Label();
f2.Controls.Add(l);
l.Location = new Point(30, 30);
l.Text = "Hello";
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen p = new Pen(Color.Black, 2);
Point p2 = new Point(50, 70);
Point p3 = new Point(50,100);
g.DrawLine(p, p2, p3);
}
The line is drawn on the underlying form (f1) but not on f2 like I wanted it to be.
Regards,
FJ
|
|
|
|
|
naglbitur wrote: protected override void OnPaint(PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen p = new Pen(Color.Black, 2);
Point p2 = new Point(50, 70);
Point p3 = new Point(50,100);
g.DrawLine(p, p2, p3);
}
This should be in the class of f2 not f1. But since you are using a generic Form instead of creating a new class that inherits from Form I guess you could hook the f2.Paint event and do your drawing there. Something like this:
<code>
f2.Paint += new new PaintEventHandler(f2_Paint);
.
.
.
private void f2_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen p = new Pen(Color.Black, 2);
Point p2 = new Point(50, 70);
Point p3 = new Point(50,100);
g.DrawLine(p, p2, p3);
}
</code>
|
|
|
|
|
I'm currently working on a project where I have to send live stream from an usb webcam. I was able to view the webcam using DirectShowNET.dll, but I wasn't able to send the stream through tcp/ip. If anyone know how to do this please please show me the way.
Thank you very much.
email: toan1981@hotmail.com
|
|
|
|
|
Hi!
I need to raise some event dynamically through Reflection.
So I get the EventInfo but my EventInfo.GetRaiseMethod() allways returns null no matter i use the parameters true, false or none.
I saw several guys with this problem, but no solution.
Any ideas? Workarounds?
Thanks,
vSoares
|
|
|
|
|