【发布时间】:2018-01-20 00:26:01
【问题描述】:
所以我在之前的迭代中得到了一些很棒的帮助,效果很好!
我尝试使用以下信息修改我的代码 Get property value from string using reflection in C#
但是要么我弄错了,要么我的课程设置方式无法使用该方法。
我使用了代码
foreach (var checkbox in this.Controls.OfType<CheckBox>())
{
pdfFormFields.SetField(checkbox.Name, checkbox.Checked ? "Yes" : "No");
}
现在效果很好,我被告知要使用一个类来使其更通用,我的类是
public class Entries
{
///Some other Values
public string ColourW;
public bool CheckBox1 { get; set; }
public bool CheckBox2 { get; set; }
public bool CheckBox3 { get; set; }
public bool CheckBox4 { get; set; }
public bool CheckBox5 { get; set; }
public bool CheckBox6 { get; set; }
public bool CheckBox7 { get; set; }
public bool CheckBox8 { get; set; }
public bool CheckBox9 { get; set; }
}
我需要一个像上面这样的 foreach 语句,但是要在类中将信息设置为类似这样的数据,但是我得到一个标识符预期的错误。
foreach (var checkbox in this.Controls.OfType<CheckBox>())
{
Data.(checkbox.Name, checkbox.Checked ? "Yes" : "No");
}
非常感谢您的帮助,非常感谢您帮助解释代码的工作原理!
对不起,我是硬件人!
编辑
多亏@Furkan Kambay 设法让复选框进出课堂,所以解决了大部分问题,但由于某种原因,PDF 上的复选框不会设置为相同的状态?
更长的解释,类设置表单在调用 pdfFormFileds("Textx", Entries.ColourW); 时工作正常所有组合框和文本字段工作正常但是 PDF 复选框在使用代码时不会改变状态,我正在使用 iTextSharp 库
foreach (var box in Entries.CheckBoxes)
{
pdfFormFields.SetField(box.Key, box.Value ? "Yes" : "No");
}
PDF 设置
string pdfTemplate = @"C:\Testing Templates\Pre V-Change Head Test Certificate Template.pdf";
string newFile = @"c:\temp\PDF\" + Entries.SerialNumber + " " + Entries.TestedWithCal + " Pre V-Change Head Test Certificate.pdf";
string Created;
PdfReader pdfReader = new PdfReader(pdfTemplate);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(newFile, FileMode.Create));
AcroFields pdfFormFields = pdfStamper.AcroFields;
【问题讨论】:
-
所以 checkbox.Name 将类似于 "CheckBox1"/2/3 等,并且您想在您的类中找到具有该名称的变量并将其分配给 true 或 false,我在正确的道路?
-
就是这样!表单上的 Checkbox1 需要将类中的 Chekbox1 设置为相同的状态
-
可能是,但如果可能的话我不想使用反射。就像我说的那样,我是一个硬件人,无法做出正面或反面
-
名称是否始终保持不变?
-
它将永远是 checkbox1 - checkbox1 等
标签: c# class checkbox foreach iteration