设置sheet为Protect=true后无法调整列宽(WPF)
1、设置sheet为Protect=true后无法调整列宽。如不设置为protect则无法将单元格Locked。2、可否设置某一列可自适应区域宽度?类似Grid中为列设置宽度为*的效果。 回复 1楼sucsy的帖子
可以先调整行列宽度,再进行锁定,方法如下:
private void button1_Click(object sender, RoutedEventArgs e)
{
int columnCount = this.gcSpreadSheet1.ActiveSheet.ColumnCount;
int rowCount = this.gcSpreadSheet1.ActiveSheet.RowCount;
for (int i = 0; i < columnCount; i++)
{
this.gcSpreadSheet1.AutoFitColumn(i);
}
for (int j = 0; j < rowCount; j++)
{
this.gcSpreadSheet1.AutoFitRow(j);
}
gcSpreadSheet1.ActiveSheet.Protect = true;
}
设置了Protect后可否可以设置 “能够手动调整列宽”呢?
因为部分单元格可以编辑,一旦内容过多就无法显示全部内容,目前列宽和行高在Protect后都无法调整。 回复 3楼sucsy的帖子
如果设置Protect属性,表单任何属性都不能更改。
明天我会继续跟进这个问题,看是否有完善的解决方法。 能否在不设置Protect=true的情况下Lock指定单元格?
protect以后很多事件都不可用了,并且我只是个别单元格需要锁定。 问题已经解决了,可以使用“EditStarting ”事件来处理
protected void BindData()
{
this.grdItems.ActiveSheet.CellChanged -= new EventHandler<CellChangedEventArgs>(ActiveSheet_CellChanged);
this.grdItems.EditStarting -= new EventHandler<GrapeCity.Windows.SpreadSheet.UI.EditCellStartingEventArgs>(grdItems_EditStarting);
this.grdItems.AutoRefresh = false;
this.grdItems.SuspendCalcService();
this.grdItems.SuspendEvent();
CreateData();
this.grdItems.ResumeEvent();
this.grdItems.ResumeCalcService();
this.grdItems.AutoRefresh = true;
App.DoEvents();
this.grdItems.ActiveSheet.CellChanged += new EventHandler<CellChangedEventArgs>(ActiveSheet_CellChanged);
this.grdItems.EditStarting += new EventHandler<GrapeCity.Windows.SpreadSheet.UI.EditCellStartingEventArgs>(grdItems_EditStarting);
}
void grdItems_EditStarting(object sender, GrapeCity.Windows.SpreadSheet.UI.EditCellStartingEventArgs e)
{
if (e.Column == 8 || e.Column == 10)
{
e.Cancel = true;
}
else
{
Row row = grdItems.ActiveSheet.Rows;
if (row.Locked)
{
e.Cancel = !(e.Column == 1 || e.Column == 9);
}
}
} 回复 6楼sucsy的帖子
好的,为了表示感谢你的反馈,给您分发 300 金币。可以用于兑换论坛奖品。
金币规则:点击进入
礼品列表:点击进入 回复 1楼sucsy的帖子
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062
页:
[1]