1) I tried to see this behavior in the CellStyles sample, and could not. In that sample, I could only see SaveCellInfo being hit once per row/col after applying a change. I added two buttons, one to populate the property grid with a combined style, and one to apply the the style in the property grid to a particular cell. When I clicked the 2nd button, SaveCellInfo is only hit once. I suspect the behavior you are seeing is due particular to your code. Can you post a sample project showing this problem, or create a Direct Trac support incident with a sample?
2) This behavior is by design. Grid cells do not share borders with their neighboring cells. By default, the grid only applies borders to the bottom and right of each cell. This avoids the double border look that you described.
If you want the cells to share borders, then you can get dynamically change the neighbor border when the current cell's border changes, and always draw just one border. I think you can do this in SaveCellInfo (change the neighbor border) and PrepareViewStyleInfo(draw only one joint border).
private void gridControl1_SaveCellInfo(object sender, GridSaveCellInfoEventArgs e)
{
if(e.ColIndex > 1 && e.RowIndex > 1)
{
if(this.gridControl1[e.RowIndex, e.ColIndex-1].Borders.Right !=
style.Borders.Left)
this.gridControl1[e.RowIndex, e.ColIndex-1].Borders.Right = style.Borders.Left;
if(this.gridControl1[e.RowIndex - 1, e.ColIndex].Borders.Bottom !=
style.Borders.Top)
this.gridControl1[e.RowIndex - 1, e.ColIndex].Borders.Bottom = style.Borders.Top;
}
}
private void gridControl1_PrepareViewStyleInfo(object sender, Grid.GridPrepareViewStyleInfoEventArgs e)
{
if(e.ColIndex > 0 && e.RowIndex > 0)
{
e.Style.Borders.Left = new GridBorder(GridBorderStyle.None);
e.Style.Borders.Top = new GridBorder(GridBorderStyle.None);
}
}