我找到了7种不同的方法来枚举连接到计算机的显示器.但是所有解决方案都会给出不同的结果(监视器的数量和每个监视器上的信息).
这些解决方案是:
使用着名的 EnumDisplayDevices
使用Windows Management Instrumentation(WMI):
使用以下查询:SELECT * FROM WmiMonitorID在root\\WMI命名空间中.
再次使用WMI:
使用新查询:SELECT * FROM Win32_DesktopMonitor在root\\CIMV2命名空间中.
使用Setup API:
首先调用SetupDiGetClassDevs以检索设备信息集,然后迭代SetupDiEnumDeviceInfo
使用的DirectX图形基础结构(DXGI)
随着第一IDXGIFactory::EnumAdapters,然后IDXGIAdapter::EnumOutput
使用连接和配置显示(CCD)API:
QueryDisplayConfig(QDC_ALL_PATHS, &numPathArrayElements, pathInfoArray, &numModeInfoArrayElements, modeInfoArray, nullptr);
我试图准确理解所有这些方法与MSDN参考之间的区别,徒劳无功.
从我观察到的:
使用这些方法时(连接显示列表,已安装显示列表,活动显示列表),我真正期望得到什么结果?如果我使用镜像显示器或扩展显示器怎么办?如果计算机有多个没有多个输出的图形卡怎么办?
额外奖励:某些方法(DXGI …
我有以下XML:
<bookstore>
<books>
<book name="book1" title="Title 1" author="Author 1"/>
<book name="book2" title="Title 2" author="Author 2"/>
<book name="book3" title="Title 1" author="Author 2"/>
</books>
<myBooks>
<book name="Test1" title="Title 1" author="Author 1"/>
<book name="Test2" title="Title 2" author="Author 1"/>
<book name="Test3" title="Title 1" author="Author 2"/>
</myBooks>
</bookstore>
Run Code Online (Sandbox Code Playgroud)
我想所有name的book在myBooks那没有一个相应book的books(标题和作者).
因此,对于该示例,我想要检索:该书,"Test2"因为该对("Title 2", "Author 1")不存在books.
到目前为止,我有:
//myBooks/book[not(@title = //books/book/@title and @author = //books/book/@author)]
Run Code Online (Sandbox Code Playgroud)
但是,当然,在这种情况下,上述XPath不起作用,因为存在组合("标题2","作者1")(来自"book2"和"book1").
如何and在同一节点上应用运算符?
在C#中,我如何解析日期时间的格式"dd/mm/yyyy"或格式字符串"dd-mm-yyyy"?我收到一个错误,指出我的字符串格式不正确.我需要能够解析所有格式而不仅仅是其中一种格式.
我有一个PDF模板,其中包含启用了扩展功能的表单.使用iTextSharp填写此表单的字段后,使用acrobat reader的用户会收到错误消息:
本文档在Adobe Reader中启用了扩展功能.该文档自创建以来已更改,并且不再使用扩展功能.请联系作者以获取本文档的原始版本.
我google了一下,但所有的帖子都谈到了"启用"扩展功能,但是,我希望表单字段保持禁用状态并关闭扩展功能
这是我正在使用的示例代码:
using (var existingFileStream = new FileStream(fileNameExisting, FileMode.Open))
using (var newFileStream = new FileStream(fileNameNew, FileMode.Create))
{
// Open existing PDF
var pdfReader = new PdfReader(existingFileStream);
// PdfStamper, which will create
var stamper = new PdfStamper(pdfReader, newFileStream);
var form = stamper.AcroFields;
var fieldKeys = form.Fields.Keys;
foreach (string fieldKey in fieldKeys)
{
if (fieldKey.Equals("Retailer Name"))
form.SetField(fieldKey, retailerName);
}
// “Flatten” the form so it wont be editable/usable anymore
stamper.FormFlattening = true; …Run Code Online (Sandbox Code Playgroud) 我有这个xaml代码View
<StackPanel>
<Button Content="I am IRON" />
<ListView ItemsSource="{Binding Path=MeasuringDeviceCommunicators}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
所述ItemSource的ListView结合于List在我的ViewModel(如图所示在代码)
当我运行应用程序时,所有我TextBlocks都垂直显示,即使我已将Orientation内部StackPanel设置为Horizontal.
我想将以下日期格式解析为C#中的DateTime对象.
"19 Aug 2010 17:48:35 GMT+00:00"
Run Code Online (Sandbox Code Playgroud)
我怎么能做到这一点?
我有以下接口/类:
public interface IUnitOfWork : IDisposable
{
event EventHandler<EventArgs> Saved;
DbSet<T> Set<T>() where T : class;
DbEntityEntry<T> Entry<T>(T entity) where T : class;
void Commit();
}
Run Code Online (Sandbox Code Playgroud)
以及存储库的实现:
public class CachedSqlRepository<T, TKey, TContext> : ICacheRepository<T, TKey, TContext>
where T : class
where TContext : DbContext, IDisposable, new()
{
//A list of the Navigation Properties to include
private readonly Expression<Func<T, object>>[] _NavigationProperties;
public CachedSqlRepository(params Expression<Func<T, object>>[] navigationProperties)
{
_NavigationProperties = navigationProperties;
using (TContext dbContext = new TContext()) //Fetch the List of Entities …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,它从大量文本文件(~2.5 GB)读取行,将每行操作为特定格式,然后将每行写入文本文件.一旦输出文本文件关闭,程序"批量插入"(SQL Server)将数据存入我的数据库.它有效,它只是很慢.
我正在使用StreamReader和StreamWriter.
由于我必须操纵文本,我几乎一直在阅读一行.但是,我认为,如果我制作了一系列线条并且每1000行左右写出一个集合,那么它至少可以加快速度.问题是(这可能纯粹是出于我的无知),我不能写一个string[]使用StreamWriter.在探索StackOverflow和互联网的其余部分后,我遇到了File.WriteAllLines,它允许我写入string[]文件,但我不认为我的计算机的内存可以处理2.5 GB的数据一次存储.此外,文件已创建,填充和关闭,因此我必须制作大量较小的文件来分解2 GB文本文件,只是将它们插入数据库.所以我宁愿远离这个选择.
我能想到的一个黑客工作是制作一个StringBuilder并使用该AppendLine方法添加每一行来制作一个巨大的字符串.然后我可以将其转换StringBuilder为字符串并将其写入文件.
但足够我的推测.我已经实现的方法有效,但我想知道是否有人可以建议更好的方法将数据块写入文件?
我正在尝试优化我的应用程序性能,这是由C#编写的,我正在尝试测量我的系统的某些功能,如(吞吐量,资源利用率,工作负载,执行时间,垃圾收集等)来衡量这些东西我我正在使用某种类型的Profilers和性能监视器.
我可以看到这些工具为不同的硬件配置提供了不同的结果.所以我想限制我的硬件配置以满足最低要求.我的问题是
让我用这个问题作为前缀,说明我对C#和WPF都很新.
我正在尝试将一组Boolean值连接到一个包含6个复选框的容器,并在按下按钮时存储这些值的状态.我假设有一种简单的方法可以做到这一点,因为绑定到一个集合的复选框似乎是很自然的事情,但到目前为止我看到的所有解决方案似乎都过于复杂(例如:http:// merill. net/2009/10/wpf-checked-listbox /).
我通过修改的数据模板创建的复选框ListBox,设置ItemsSource的ListBox到ObservableCollection,但我的问题是,我不知道该怎么绑定IsChecked到,因为我试图将其绑定到实际对象的集合而不是对象的属性.