WPF下的CheckBox
本帖最后由 szpzr 于 2021-12-6 12:57 编辑列类型设置为 CheckBox 类型,如何判断是否勾选或不勾选?发错了,应该在spread。
本帖最后由 Richard.Ma 于 2021-12-6 15:24 编辑
wpf没有专门设置单元格显示类型的,没法直接设置为checkbox,你目前是如何设置复选框的,我看你翻了之前的一个老帖子,是通过重写Workbook来实现的吗 是的。 这个取决于你单元格中的值是什么,比如就是True和False的字符串,你就判断字符串就行
比如是0,1,要1的时候就选中,可以参考下面的代码
DrawingObject
class MyDrawingObjectProvider : IDrawingObjectProvider
{
public DrawingObject[] GetDrawingObjects(Worksheet sheet, int row, int column, int rowCount, int columnCount)
{
DrawingObject dobj;
int value = -1;
object obj = sheet.GetValue(row, column);
if (obj != null)
{
if (obj is int) value = (int)obj;
else
{
int.TryParse(obj.ToString(), out value);
}
if (value > 2) value = -1;
}
CheckBox control = new CheckBox() ;
int intvalue = 0;
if(obj!=null)
int.TryParse(obj.ToString(),out intvalue);
control.IsChecked = intvalue==1?true:false;
control.Checked += new RoutedEventHandler((sender, args) => {
sheet.SetValue(row, column, 1);
});
control.Unchecked += new RoutedEventHandler((sender, args) => {
sheet.SetValue(row, column, 0);
});
dobj = new ControlDrawingObject(row, column, control);
return new DrawingObject[] { dobj };
}
}
应用
public MainWindow()
{
InitializeComponent();
ss.ActiveSheet.ColumnCount = 3;
ss.ActiveSheet.RowCount = 3;
ss.ActiveSheet.Cells.Value = 1;
ss.ActiveSheet.Cells.Value = 1;
DrawingObjectManager.SetDrawingObjectProvider(ss, new MyDrawingObjectProvider());
}
比如窗体上有个按钮,单击后判断A列哪一行勾选后不勾选
这个没有办法直接判断,但是其实在上面的这种显示方式里, 你的单元格值已经和你的复选框是否勾选关联起来了,比如上面0,1的代码例子,设置了Value=1,自然就是勾选的
那么你要判断A列哪一行勾选的只需要遍历一下a列的单元格值就行了,=1的自然是勾选的 谢谢 不客气
页:
[1]