Tag: infopath

等待Winform UserControl加载

我有一个自定义的Winform Infopath UserControl,它从sharepoint库加载一个表单。 打开表单后,我有一系列函数调用,从表单中提取一些数据,甚至是截屏function。 但是表单加载需要花费很多时间,并且其他函数在表单加载之前完成得太快,这给了我错误的结果。 有没有办法我可以有一个等待函数,在调用其他函数之前等待infopath表单完成加载?(在c#中) –update 示例代码: 在UserControl中,我有一个表单初始化函数,它基本上加载表单 public void InitializeInfoPathForm(string myurl) { if (this.IsInitialized) return; CreateForm(new Uri(myurl),null); } public void CreateForm( Uri formUrlName, Stream dataStream) { TestInitialization(); try { this.formControl.Close(); // Open / create a form if (dataStream != null) formControl.Open( formUrlName.ToString() ); else { formControl.Open( formUrlName.ToString()); } RefreshView(UIStatesForm.DocumentReadMode); } catch (Exception) { […]

System.TypeInitializationException

我正在编写测试来测试Infopath Forms在Form Control中打开,我的测试方法是 [TestMethod] public void Validate_OpenInfopathInFormControl() { Helper.OpenForm(); //Other Code } 我写了助手课 public class Helper { public static void OpenForm() { //Code to Open Form } } 但每次我执行此代码时,这都给了我: 测试方法InfoPathTest.TestAPI.Validate_OpenInfopathInFormControl抛出exception:System.TypeInitializationException:’InfoPathTest.Helpers.Helper’的类型初始值设定项引发exception。 —> System.NullReferenceException:对象引用未设置为对象的实例.. 当我尝试调试时,当Helper类需要初始化时失败。 这真的是吃我的脑袋,有什么解决方案吗? 这是完整的助手类: namespace InfoPathTest.Helpers { public class Helper { //This is the form i need to OPEN private static MainForm f = […]

“’:’字符,hex值0x3A,不能包含在名称中”

我有一个代码,它将读取一些xml文件。 我尝试了不同的方法来解决这个问题,但不能。 我也尝试这样编码: Namespace my = “http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-01-11T08:31:30″; XElement myEgitimBilgileri = XDocument.Load(@”C:\25036077.xml”).Element(“my:”+ “Egitim_Bilgileri”); 但一直都是同样的错误。 这是原件: private void button2_Click(object sender, EventArgs e) { XElement myEgitimBilgileri = XDocument.Load(@”C:\25036077.xml”).Element(“my:Egitim_Bilgileri”); if (myEgitimBilgileri != null) { foreach (XElement element in myEgitimBilgileri.Elements()) { Console.WriteLine(“Name: {0}\tValue: {1}”, element.Name, element.Value.Trim()); } } Console.Read(); } 这是我的xml文件的路径: 这是我在XML中的命名空间的路径 xmlns:my=”http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-01-11T08:31:30″ xmlns:my=”http://schemas.microsoft.com/office/infopath/2003/myXSD/2008-01-23T00:43:17″

在内存中从.CAB存档或InfoPath XSN文件中提取的最小C#代码

最近我一直在尝试实现一些从InfoPath XSN文件(.CAB存档)中提取文件的function。 在广泛搜索互联网之后,似乎没有本机.NET API。 所有当前的解决方案都围绕着大型库,即托管的C ++,它包含了Cabinet.dll。 遗憾的是,所有这些都违反了我的公司“没有第三方图书馆”的政策。 从2.0开始,.NET获得了一个名为UnmanagedFunctionPointer的属性,该属性允许使用__cdecl进行源级回调声明。 在此之前,__ stdcall是镇上唯一的节目,除非你不介意捏造IL,这种做法在这里也是非法的。 我立即知道这将允许为Cabinet.dll实现一个相当小的C#包装器,但我无法在任何地方找到一个示例。 有没有人知道使用本机代码执行此操作的方式比下面更清晰? 我当前的解决方案(执行非托管代码,但完全正常,在32/64位上测试): [StructLayout(LayoutKind.Sequential)] public class CabinetInfo //Cabinet API: “FDCABINETINFO” { public int cbCabinet; public short cFolders; public short cFiles; public short setID; public short iCabinet; public int fReserve; public int hasprev; public int hasnext; } public class CabExtract : IDisposable { //If any of […]