我期待这个设置会影响控件本身,但我似乎无法通过将AllowUserToAddRows设置为true的DataGridView添加新行.我只是垃圾使用我的鼠标和键盘,还是我完全误解了这个属性?我怀疑它是后者,虽然我在文档的方式上找不到太多指向我正确的方向.
编辑:顺便说一句,这不是我的垃圾,它似乎与使用List作为DataGridView的DataSource有关; 如果我绑定到List,那么小'*'就不会出现.
我想boost::any_cast<T>只在any没有隐式转换的类型时抛出异常T.正常行为似乎是抛出异常,如果类型any不是T,无论隐式转换如何.
例:
boost::any a = 1;
boost::any_cast<int>(a); // This succeeds, and rightfully so
boost::any_cast<long>(a); // I don't want this to throw
boost::any_cast<Widget>(a); // I want this to throw
Run Code Online (Sandbox Code Playgroud)
谁能告诉我是否有一种简单的方法来获得我想要的功能,或者更好地为我提供一个很好的理由来解释为什么现有的行为是这样的?
令人困惑的标题,希望一些代码将澄清:
struct MyNestedType {
void func();
};
struct MyType {
MyNestedType* nested;
}
std::vector<MyType> vec;
// ... populate vec
// I want something approximating this line, but that doesn't use made-up C++!
std::for_each(vec.begin(), vec.end(), std::mem_fun_ref(&MyType::nested->func));
Run Code Online (Sandbox Code Playgroud)
所以基本上我想在容器的每个元素上调用一个方法,但它实际上并不是类型的方法,它是包含类型的一些方法...我知道我可以编写一个函数对象来"传递"调用但是有一些我想打电话的方法会变得混乱.
有任何想法吗?
我刚才创建了一个存储库作为测试,但我现在想要创建一个具有相同名称的不同存储库 - 有没有办法使用mercurial-server删除现有存储库,并创建另一个具有相同名称的存储库?或者也许是一种覆盖存储库内容的方法?
有时(大约50%的运行),EnumDevices需要5-10秒才能返回.通常它几乎是即时的.我找不到任何关于这种行为的其他报道.
当事情变得缓慢时,可以通过观看标准输出来进行分析:)这:
std::cout << "A";
directInput8Interface->EnumDevices(DI8DEVCLASS_GAMECTRL, MyCallback, NULL, DIEDFL_ATTACHEDONLY);
std::cout << "C";
...
BOOL CALLBACK MyCallback(LPCDIDEVICEINSTANCE, LPVOID)
{
std::cout << "B";
return DIENUM_CONTINUE;
}
Run Code Online (Sandbox Code Playgroud)
似乎通过枚举设备随机挂起 - 有时它会在回调被调用之前,有时在一对之后,有时它会在最后一次调用之后.
这显然是一个简化的代码块; 我实际上正在使用OIS输入库(http://sourceforge.net/projects/wgois/),因此对于上下文,请在此处查看完整的源代码:
然而,似乎没有任何特别的果味,但可能是他们初始化的原因可能是原因 - 我不太了解DI8发现它.
任何有关它为何如此缓慢的想法将不胜感激!
编辑:
我已设法抓住etl跟踪文件中的挂起并在Windows性能分析器中对其进行分析.看起来EnumDevices最终调用DInput8.dll!fGetProductStringFromDevice,调用HIDUSB.SYS!HumCallUSB,调用KeWaitForSingleObject和等待.10次中有9次(字面意思是 - 跟踪中有10个样本)这很快就会返回(每次324us),其中包含usbport.sys!USBPORT_Core_iCompleteDoneTransfer紧随其后的readstack HIDUSB.SYS!HumCallUsbComplete,这看起来很正常.
但是10次中的1次,这几乎需要5秒才能返回.在准备好的callstack ntkrnlmp.exe!KiTimerExpiration而不是HIDUSB.SYS函数.我想这一切都表明HIDUSB.SYS驱动程序异步查询设备的超时时间为5秒,有时它会失败并达到此超时.
我不知道这个故障是否与任何一个设备特别相关(我确实有一些USB HID)或者它是随机的 - 它很难测试,因为它并不总是发生.同样,任何人都可以给我的任何信息都会受到赞赏,但是由于DirectInput出现了奇怪的情况,我不希望微软很快解决这个问题!
也许我只需要在早期,异步地开始初始化输入,并接受有时在用户输入发生之前会有5秒的延迟.
使用命令行:
"xsd.exe" "OFX 2.1.1 schema/OFX2_Protocol.xsd" /c /namespace:OFX /nologo"
Run Code Online (Sandbox Code Playgroud)
生成的C#源文件无法使用以下错误构建:
D:\blah\OFX2_Protocol.cs(19,6): error CS0579: Duplicate 'System.CodeDom.Compiler.GeneratedCodeAttribute' attribute
D:\blah\OFX2_Protocol.cs(20,6): error CS0579: Duplicate 'System.SerializableAttribute' attribute
D:\blah\OFX2_Protocol.cs(21,6): error CS0579: Duplicate 'System.Diagnostics.DebuggerStepThroughAttribute' attribute
D:\blah\OFX2_Protocol.cs(22,6): error CS0579: Duplicate 'System.ComponentModel.DesignerCategoryAttribute' attribute
D:\blah\OFX2_Protocol.cs(23,6): error CS0579: Duplicate 'System.Xml.Serialization.XmlTypeAttribute' attribute
D:\blah\OFX2_Protocol.cs(24,6): error CS0579: Duplicate 'System.Xml.Serialization.XmlRootAttribute' attribute
Run Code Online (Sandbox Code Playgroud)
一个类似的XSD架构,我从OFX2架构复制然后修剪到我想要的有用位,生成一个C#文件,它构建得很好,但具有与完整架构的C#表示相同的所有属性.
知道为什么吗?OFX架构是否已损坏?xsd.exe坏了吗?C#坏了吗?我坏了吗?
我通常使用 C++ 进行编程,因此所有这些 DataSource/DataSet/Binding 内容都让我感到困惑。希望你们能帮忙。
基本上,我正在为基于 XML 的文件格式(特别是用于金融数据的 OFX)编写一个编辑器。我在我的架构上使用 xsd.exe 将加载的文件反序列化为漂亮的、普通的旧类。我发现了 DataGridView,它非常棒,我可以将其 DataSource 属性设置为我感兴趣的集合之一(特别是事务列表),当我浏览这些值时,这些更改会反映在加载的值中反序列化的文件,然后我可以在保存时将其序列化。但是,当我只想将一个简单的字符串“映射”到文本框(例如帐号)时,我无法在文本框似乎没有数据源成员的情况下使用这种聪明的方法...使用它们的“文本”属性仅设置文本一次,不会将更改反映回底层对象,因此保存必须首先从控件中获取值。我希望它像 DataGridView 一样是自动的。
我尝试摆弄 DataBindings,但我不知道使用什么作为 propertyName 或 dataMember,所以我不确定这是否是我要使用的:
accountNumberTextBox.DataBindings.Add(new Binding("???", myDocument.accountNumber, "???");
Run Code Online (Sandbox Code Playgroud)
我是否遗漏了一些非常明显的东西?但愿如此!
我有一个XSD架构,我已经生成了一个使用xsd.exe的类,我试图用来XmlSerializer.Deserialize从一个应该符合XSD架构的XML文件创建该类的实例.不幸的是,XML文件有一些额外的元素,架构不期望这些元素会导致System.InvalidOperationException抛出Deserialize.
我已经尝试<xs:any>在我的架构中添加元素,但这似乎没有任何区别.
我的问题是:有没有办法XmlSerializer.Deserialize忽略这些额外的元素?
我正在写分析的几个网页源一些小的应用程序,提取一些数据,并保存成另一种格式.具体来说,我的一些银行不提供交易/报表的下载,但它们确实提供了对其网站上的这些报表的访问.
我做了一个很好,但另一个(HSBC UK)被证明在一个痛苦的屁股,因为它的来源是无效的XHTML.例如,有空白的前<?xml?>标签,并且存在其中的地方==是用来代替=属性名和其值(例如间<li class=="lastItem">).
当然,当我通过这个数据到我XmlDocument,它抛出一个不稳定(更准确的除外).
我的问题是:是否可以放宽C#中XML解析的要求?我知道这是要好得多,从源头解决这些问题 - 这绝对是我的态度太 - 但有大约几率为零汇丰会改变他们的网站,该网站已经工作在大多数浏览器只是有点老了我.
我在C++中使用函数数组的经验不多.我需要使用一个函数数组,其中数组包含来自不同对象的函数.这里有一些虚拟代码来说明我想要实现的内容.
class base_class
{
public:
virtual int function1(int arg1, int arg2);
virtual int function2(int arg1, int arg2);
};
class derived_class : public base_class
{
public:
int function1(int arg1, int arg2) { /* ... */ };
int function2(int arg1, int arg2) { /* ... */ };
// ...
};
typedef int (*functions) (int arg1, int arg2);
int main()
{
derived_class object1;
derived_class object2;
functions func_instance[4];
func_instance[0] = object1.function1;
func_instance[1] = object1.function2;
func_instance[2] = object2.function1;
func_instance[3] = object2.function2;
// ...
}
Run Code Online (Sandbox Code Playgroud)
我无法让它工作,它抛出以下错误: …
我正在使用的文件格式(OFX)类似于XML,并且在类似XML的位开始之前包含一堆纯文本内容.它不喜欢在纯文本和XML部分之间,所以我想知道是否有办法让XmlSerialiser忽略它.我知道我可以浏览文件并删除该行,但是首先不写它会更简单,更清洁!有任何想法吗?