Tag: C#的

ObservableCollection还监视集合中元素的更改

是否有一个具有以下特征的集合(BCL或其他): 如果集合发生更改,则发送事件,如果集合中的任何元素发送PropertyChanged事件,则发送事件。 ObservableCollection<T>sorting其中T: INotifyPropertyChanged和集合也监视元素的更改。 我可以包装一个可观察的集合,我自己做事件订阅/取消订阅集合中的元素被添加/删除,但我只是想知道现有的集合是否已经这样做了?

控制音量混音器

我想控制其他应用程序量(firefox)。 我可以用Volume Mixer来做 什么是Volume Mixer的库?

如何在C#中的特定时间每天调用一个方法?

我search了这个,find了关于Quartz.net的答案。 但是对我的项目来说似乎太大了。 我想要一个等效的解决scheme,但更简单和(最好)代码(不需要外部库)。 我如何在特定的时间每天调用一个方法? 我需要添加一些关于这个的信息: 最简单(也是丑陋的)的方法是在适当的时候每秒钟检查一次并调用方法 我想要一个更有效的方法来做到这一点,不需要经常检查时间,而且我可以控制工作是否完成了。 如果方法失败(由于任何问题),程序应该知道要写入日志/发送电子邮件。 这就是为什么我需要调用方法,而不是安排工作。 我发现这个解决scheme在Java中以固定的时间在Java中调用方法 。 在C#中有类似的方法吗? 编辑:我已经这样做了。 我在void Main()中添加了一个参数,并且创build了一个bat(由Windows Task Scheduler调度)来运行带有这个参数的程序。 程序运行,完成工作,然后退出。 如果一项工作失败,它能够写日志和发送电子邮件。 这种方法适合我的要求:)

打印C中的前导0?

我试图find一个很好的方式来打印前导0,如01001的邮政编码。 虽然这个数字将被存储为1001,但是这样做的好方法是什么? 我想使用任何case语句/如果然后找出多less个数字的数字,然后将其转换为一个字符数组与额外的0打印,但我不禁想到可能有办法做到这一点printf格式语法正在逃避我。

如何使用C#从XML中删除所有命名空间?

我正在寻找干净,优雅和聪明的解决scheme来从所有XML元素中删除命名空间? function如何做到这一点? 界面定义: public interface IXMLUtils { string RemoveAllNamespaces(string xmlDocument); } 使用XML从NS中删除NS <?xml version="1.0" encoding="utf-16"?> <ArrayOfInserts xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <insert> <offer xmlns="http://schema.peters.com/doc_353/1/Types">0174587</offer> <type2 xmlns="http://schema.peters.com/doc_353/1/Types">014717</type2> <supplier xmlns="http://schema.peters.com/doc_353/1/Types">019172</supplier> <id_frame xmlns="http://schema.peters.com/doc_353/1/Types" /> <type3 xmlns="http://schema.peters.com/doc_353/1/Types"> <type2 /> <main>false</main> </type3> <status xmlns="http://schema.peters.com/doc_353/1/Types">Some state</status> </insert> </ArrayOfInserts> 在我们调用RemoveAllNamespaces(xmlWithLotOfNs)之后,我们应该得到: <?xml version="1.0" encoding="utf-16"?> <ArrayOfInserts> <insert> <offer >0174587</offer> <type2 >014717</type2> <supplier >019172</supplier> <id_frame /> <type3 > […]

有没有为整个应用程序设置文化的方法? 所有当前线程和新线程?

有没有为整个应用程序设置文化的方法? 所有当前线程和新线程? 我们有存储在数据库中的文化的名称,当我们的应用程序启动时,我们做 CultureInfo ci = new CultureInfo(theCultureString); Thread.CurrentThread.CurrentCulture = ci; Thread.CurrentThread.CurrentUICulture = ci; 但是,当然,当我们想要在新线程中做某些事情时,这会“失去”。 有没有为整个应用程序设置CurrentCulture和CurrentUICulture的方法? 所以新线程也能获得这种文化? 或者,当一个新的线程被创build,我可以连接到一些事件触发?

打破了嵌套的循环

如果我有一个嵌套在另一个for循环,我怎么能有效地从两个循环(内部和外部)以最快的方式出来? 我不想要使用布尔值,然后不得不说去另一种方法,而只是执行外循环后的第一行代码。 什么是快速和好的方式去做这个? 谢谢 我认为例外不是很便宜/应该只是在一个真正的例外条件等等。因此,我不认为这个解决scheme从性能angular度来看是好的。 我不觉得利用.NET(anon方法)中的新特性来做一些非常重要的事情是正确的。 因此,tvon(抱歉不能拼完整的用户名!)有一个很好的解决scheme。 马克:很好的使用匿名方法,这也很好,但是因为我可以在一个不使用支持匿名方法的.NET / C#版本的工作中工作,所以我需要知道一个传统的方法。

如何使用Qt的PIMPL成语?

PIMPL代表执行进程 。 实现代表“实现细节”:类的用户不需要关心的东西。 Qt自己的类实现通过使用PIMPL惯用语将接口与实现完全分开。 然而,由Qt提供的机制没有logging。 如何使用它们? 我想这是关于“我如何PIMPL”在Qt的规范问题。 答案将由下面显示的一个简单的坐标input对话框界面来激励。 当我们有一个半复杂的实现时,使用PIMPL的动机变得明显。 进一步的动机在这个问题上给出。 即使是一个相当简单的类也必须在其接口中引入大量其他头文件。 基于PIMPL的界面相当干净可读。 // CoordinateDialog.h #include <QDialog> #include <QVector3D> class CoordinateDialogPrivate; class CoordinateDialog : public QDialog { Q_OBJECT Q_DECLARE_PRIVATE(CoordinateDialog) #if QT_VERSION <= QT_VERSION_CHECK(5,0,0) Q_PRIVATE_SLOT(d_func(), void onAccepted()) #endif QScopedPointer<CoordinateDialogPrivate> const d_ptr; public: CoordinateDialog(QWidget * parent = 0, Qt::WindowFlags flags = 0); ~CoordinateDialog(); QVector3D coordinates() const; Q_SIGNAL void […]

在C#中将数据表转换为JSON

我想从数据库中获取logging到一个DataTable 。 然后将DataTable转换成JSON对象。 将JSON对象返回给我的JavaScript函数。 我使用这个代码通过调用: string result = JsonConvert.SerializeObject(DatatableToDictionary(queryResult, "Title"), Newtonsoft.Json.Formatting.Indented); 要将DataTable转换为JSON,它可以正常工作并返回以下内容: { "1": { "viewCount": 703, "clickCount": 98 }, "2": { "viewCount": 509, "clickCount": 85 }, "3": { "viewCount": 578, "clickCount": 86 }, "4": { "viewCount": 737, "clickCount": 108 }, "5": { "viewCount": 769, "clickCount": 130 } } 但我希望它返回以下内容: {"records":[ { "Title": 1, "viewCount": […]

使用包含Type的variables创build通用<T>types实例

是否有可能实现以下代码? 我知道这是行不通的,但我想知道是否有解决方法? Type k = typeof(double); List<k> lst = new List<k>();