+2009-03-16 Ivan N. Zlatev <contact@i-nz.net>
+
+ * DataGridViewBand.cs: Update our State whenever a property changes.
+ * DataGridView.cs: Don't be so generous in reseting Displayed, because
+ it will spawn lots and lots of unneeded State changed events.
+ [Fixes bug #484989]
+
2009-03-16 Ivan N. Zlatev <contact@i-nz.net>
* DataGridView.cs, DataGridViewRow.cs, DataGridViewColumn.cs:
bounds.Y += columnHeadersHeight;
}
- // Reset all columns to !Displayed
- for (int i = 0; i < Columns.Count; i++)
+ // Reset not displayed columns to !Displayed
+ for (int i = 0; i < first_col_index; i++)
Columns[i].DisplayedInternal = false;
int gridWidth = rowHeadersVisible ? rowHeadersWidth : 0;
break;
}
- // Reset all rows to !Displayed
- for (int i = 0; i < Rows.Count; i++)
+ // Reset all not displayed rows to !Displayed
+ for (int i = 0; i < first_row_index; i++)
GetRowInternal (i).DisplayedInternal = false;
// Draw rows
[DefaultValue (false)]
public virtual bool Frozen {
get { return frozen; }
- set { frozen = value; }
+ set {
+ if (frozen != value) {
+ frozen = value;
+ if (frozen)
+ SetState (State | DataGridViewElementStates.Frozen);
+ else
+ SetState (State & ~DataGridViewElementStates.Frozen);
+ }
+ }
}
[Browsable (false)]
[DefaultValue (false)]
public virtual bool ReadOnly {
get { return readOnly; }
- set { readOnly = value; }
+ set {
+ if (readOnly != value) {
+ readOnly = value;
+ if (readOnly)
+ SetState (State | DataGridViewElementStates.ReadOnly);
+ else
+ SetState (State & ~DataGridViewElementStates.ReadOnly);
+ }
+ }
}
[Browsable (true)]
return DataGridView.AllowUserToResizeColumns ? DataGridViewTriState.True : DataGridViewTriState.False;
}
return resizable; }
- set { resizable = value; }
+ set {
+ if (value != resizable) {
+ resizable = value;
+ if (resizable == DataGridViewTriState.True)
+ SetState (State | DataGridViewElementStates.Resizable);
+ else
+ SetState (State & ~DataGridViewElementStates.Resizable);
+ }
+ }
}
[Browsable (false)]
return selected;
}
set {
- selected = value;
+ if (selected != value) {
+ selected = value;
+
+ if (selected)
+ SetState (State | DataGridViewElementStates.Selected);
+ else
+ SetState (State & ~DataGridViewElementStates.Selected);
+ }
}
}
internal bool DisplayedInternal {
get { return displayed; }
- set { displayed = value; }
+ set {
+ if (value != displayed) {
+ displayed = value;
+ if (displayed)
+ SetState (State | DataGridViewElementStates.Displayed);
+ else
+ SetState (State & ~DataGridViewElementStates.Displayed);
+ }
+ }
}
[Browsable (false)]
[DefaultValue (true)]
public virtual bool Visible {
get { return visible; }
- set { visible = value; }
+ set {
+ if (visible != value) {
+ visible = value;
+ if (visible)
+ SetState (State | DataGridViewElementStates.Visible);
+ else
+ SetState (State & ~DataGridViewElementStates.Visible);
+ }
+ }
}
public virtual object Clone ()