|
|
|
Most times when you use this it indicates that you have used the wrong construct. If you are issuing a break then this shows that you have reached a terminating condition.
If you need to drop out of a loop early, this would indicate that you should be using something like a while loop instead. See the following:
for (int i = 0; i < 10 ; i++)
{
if (i == 2) break;
}
Contrast this with:
int i = 0;
while (i++ != 2)
{
}
the last thing I want to see is some pasty-faced geek with skin so pale that it's almost translucent trying to bump parts with a partner - John Simmons / outlaw programmer
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
Pete O'Hanlon wrote: If you need to drop out of a loop early, this would indicate that you should be using something like a while loop instead.
Or a different for expression
Node n = null;
NodeList list = doc.selectNodes("*");
for(int j=0, null == n && j < list.Length, j++)
{
if( ???)
n = list[j];
}
led mike
|
|
|
|
|
Ya, Ya, we all know the theory; but break is more handier
|
|
|
|
|
Handy doesn't make it right. Just lazy. If you take shortcuts here, where else do you take shortcuts? Whenever I see something like this, it sets the alarm bells ringing that there are problems with the design.
the last thing I want to see is some pasty-faced geek with skin so pale that it's almost translucent trying to bump parts with a partner - John Simmons / outlaw programmer
Deja View - the feeling that you've seen this post before.
|
|
|
|
|
And if it's due to an exceptional state, it may be more expressive. But certainly use it with caution.
|
|
|
|
|
Hi guys,
Does anyone know how to deploy the MMC Snapin project ?
Thanks,
Glen
|
|
|
|
|
In my application, I have a DataGrid that is used to display search results from a query into a Firebird SQL database. The DataGrid is not directly connected to the DB, but instead I perform my query and store the results in a std::vector, perform some more work on it, then copy the final results into an ArrayList that the DataGrid is connected to.
So, when I do a search, it goes like this:
search_results_list->Clear();
tr = db_conn->BeginTransaction();
typedef vector<int>::const_iterator CIter;
for (CIter it = run_ids.begin(); it != run_ids.end(); ++it) {
search_results_list->Add(disp);
}
tr->Commit();
datagrid_search_results->DataSource = 0;
datagrid_search_results->DataSource = search_results_list; This works fine the first time, however I am having the following problem. If I click on a row, then subsequently perform another search that makes the row disappear, I get an IndexOutOfRange exception:
************** Exception Text **************
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.Windows.Forms.DataGrid.Edit(String instantText)
at System.Windows.Forms.DataGrid.Edit()
at System.Windows.Forms.DataGrid.OnEnter(EventArgs e)
at System.Windows.Forms.Control.NotifyEnter()
at System.Windows.Forms.ContainerControl.UpdateFocusedControl()
However, my DataGrid has set the ReadOnly property to true . In my other DataGrid that is used for a different purpose, I was able to solve it by setting the CurrentSelectedRow property to 0 before removing the elements, but this does not work in this situation.
I am not sure if it is related to this, but the only event I am handling for this DataGrid is the MouseUp event, in order to get it to select the entire row when a cell is clicked:
System::Void datagrid_MouseUp(System::Object* sender, System::Windows::Forms::MouseEventArgs* e)
{
using System::Drawing::Point;
using System::Windows::Forms::DataGrid;
using System::Windows::Forms::DataGridCell;
Point pt = Point(e->X, e->Y);
DataGrid* datagrid = __try_cast<DataGrid*>(sender);
DataGrid::HitTestInfo* hti = datagrid->HitTest(pt);
if (hti->Type == DataGrid::HitTestType::Cell) {
datagrid->CurrentCell = DataGridCell(hti->Row, hti->Column);
datagrid->Select(hti->Row);
}
}
--
Marcus Kwok
|
|
|
|
|
ricecake wrote:
datagrid_search_results->DataSource = 0;
datagrid_search_results->DataSource = search_results_list;
So, the solution was to refresh the currency manager after resetting the data source by adding the following two lines:
CurrencyManager* cm = __try_cast<CurrencyManager*>(BindingContext->Item[search_results_list]);
cm->Refresh();
--
Marcus Kwok
|
|
|
|
|
i want to add combobox editor to the extended property(using iextenderprovider) and want to populate the property in the coding intelliscence?
please help me.
thanks.
nilesh kolnoorkar.
|
|
|
|
|
Hi all,
i want to know how to get asp.net 2005 automatically change build number for the project "each time i build it", also i want to know why .net 2005 doesn't have a bin directory containing dll files and how can i manage this issue too.
Thank you
|
|
|
|
|
Search the articles here on CP. There's one that I use.
|
|
|
|
|
Hi All,
What's the equivalent of CScrollView in .NET? I'm looking for something to let me draw large vector diagrams in a scrollable, zoomable view, then print them either on multiple pages or scale-to-fit, and nothing seems to fit the bill.
Any suggestions gratefully received!
|
|
|
|
|
Should I implement an IEnermable interface explicitly?
#region IEnumerable<Range> Members
IEnumerator<Range> IEnumerable<Range>.GetEnumerator()
{
foreach (Range r in ranges)
yield return r;
}
#endregion
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
throw new NotImplementedException("Non-generic enumerator");
}
They both cannot be implicit because C# does not allow overloading methods that only differ by return type. In what senerio should GetEnermerator be explicit rather than implicit? How do you usually implement yours? Also should I implement anything in the non-generic GetEnumerator method?
█▒▒▒▒▒██▒█▒██
█▒█████▒▒▒▒▒█
█▒██████▒█▒██
█▒█████▒▒▒▒▒█
█▒▒▒▒▒██▒█▒██
|
|
|
|
|
I'm not sure I understand the question, but I would probably change that first method to
<br />
IEnumerator IEnumerable.GetEnumerator() <br />
{<br />
return ( ranges.GetEnumerator() ) ;<br />
}<br />
|
|
|
|
|
PIEBALDconsult wrote: I'm not sure I understand the question
I am curious to whether I should implement the interface explicitly rather than implicitly. If I implement it explicitly I will not be able to call the GetEnumerator method unless I cast the instance of my class to IEnumerable(I think). Do you usually implement your IEnumerable interfaces explicitly, and do you implement any functionality in the non-generic GetEnumerator method?
█▒▒▒▒▒██▒█▒██
█▒█████▒▒▒▒▒█
█▒██████▒█▒██
█▒█████▒▒▒▒▒█
█▒▒▒▒▒██▒█▒██
|
|
|
|
|
Why does your generic GetEnumerator method return a non-generic enumerator?
---
Year happy = new Year(2007);
|
|
|
|
|
Guffa wrote: Why does your generic GetEnumerator method return a non-generic enumerator?
CP seen those as HTML tags and removed them, I should have checked "ignore html tags" when I posted it. It is generic in my project.
█▒▒▒▒▒██▒█▒██
█▒█████▒▒▒▒▒█
█▒██████▒█▒██
█▒█████▒▒▒▒▒█
█▒▒▒▒▒██▒█▒██
|
|
|
|
|
Captain See Sharp wrote: CP seen those as HTML tags and removed them, I should have checked "ignore html tags" when I posted it. It is generic in my project.
I see.
If you let Visual Studio create the stubs for implementing the interface, this is what you get:
public class test : IEnumerable<string> {
#region IEnumerable<string> Members
public IEnumerator<string> GetEnumerator() {
throw new Exception("The method or operation is not implemented.");
}
#endregion
#region IEnumerable Members
IEnumerator IEnumerable.GetEnumerator() {
throw new Exception("The method or operation is not implemented.");
}
#endregion
}
This makes the non-generic method explicitly implemented. I think that will work the best, as you should prefer the generic method unless you are using a reference to IEnumerable.
I would implement both of them, even if one is rarely used. There might be a situation where you would need the non-generic one.
---
single minded; short sighted; long gone;
|
|
|
|
|
Guffa wrote: I would implement both of them, even if one is rarely used. There might be a situation where you would need the non-generic one.
Is it possible for me to use the yield statement in the non-generic GetEnumerator method? If so should I then make the generic version call and return the return value of the non-generic GetEnumerator method which would contain the iterator logic with the yield keyword? What is the best practice for implementing the IEnermerable interface?
I figured out a better way, I will just return the enumerator for the internal array.
-- modified at 17:24 Thursday 1st February, 2007
█▒▒▒▒▒██▒█▒██
█▒█████▒▒▒▒▒█
█▒██████▒█▒██
█▒█████▒▒▒▒▒█
█▒▒▒▒▒██▒█▒██
|
|
|
|
|
I wrote some C# code to send an e-mail using System.Net.Mail.SmtpClient. This allows me to specify the sender, receiver, message, etc., and it works on one SMTP server perfectly. However, when I tried using AOL's SMTP server instead, I was getting authentication failures from their server. Using my regular e-mail program (Eudora), I CAN send to AOL's SMTP server.
The only apparent difference between the two programs is that Eudora does this:
EHLO name..
AUTH LOGIN..
<credentials>..
The program I wrote using SmtpClient does this:
EHLO name...
AUTH LOGIN <credentials>..
AOL's SMPT server rejects the latter, saying "501 INVALID SASL FORMAT OR LENGTH".
I don't know if what AOL's server is doing is breaking any rules or not, but that's kind of beside the point. Is there any way to adjust the SmtpClient object to be more "friendly" to AOL? If not, is there another class I can use?
|
|
|
|
|
I have my collection displayed as property in PropertyGrid.
How can I prevent the collection from being editable by .NET Framework's Collection Editor Dialog Box?
Thanks.
|
|
|
|
|
if i understand correctly
[Browsable(false)]<br />
public CollectionType Collection<br />
{<br />
get{;}<br />
set{;}<br />
}
|
|
|
|
|
No, this is not what I mean...
"[Browsable(false)]" on my collection tells the property grid not to display the collection in the grid.
Whereas I _need_ the collection to be displayed; at the same time the collection is expected to be in "read-only" mode.
Thanks.
|
|
|
|