我有一个标签式GUI,每个标签包含一个框架.在其中一个框架中有一个DataGrid.当用户选择此选项卡时,我需要对datagrid进行排序,因此我使用TabControl SelectionChanged事件来触发排序.但是,每次从DataGrid中选择一个项时,此事件都会触发,即使选项卡本身保持不变.
我尝试了很多不同的事件:GotFocus用于TabItem的TabItem RequestBringIntoView
但他们似乎都遇到了这个问题.是什么造成的?
对于我们在C#中的支持软件,我需要确定两个DateTime之间的时间跨度,但我只想计算开放时间(即工作日从09:00到17:00).
因此,例如,如果第一个DateTime是15/02/2011 16:00而第二个是16/02/2011 10:00,则该方法将返回2个小时.
任何帮助是极大的赞赏!
我正在制作一个需要监控Gmail帐户以查找新邮件的程序,为了尽快获取它们,我正在使用JavaMail的空闲功能.这是我用来调用folder.idle()的线程的代码片段:
//Run method that waits for idle input. If an exception occurs, end the thread's life.
public void run() {
IMAPFolder folder = null;
try {
folder = getFolder();
while(true)
{
//If connection has been lost, attempt to restore it
if (!folder.isOpen())
folder = getFolder();
//Wait until something happens in inbox
folder.idle(true);
//Notify controller of event
cont.inboxEventOccured();
}
}
catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("MailIdleWaiter thread ending.");
}
Run Code Online (Sandbox Code Playgroud)
getFolder()方法基本上打开与IMAP服务器的连接并打开收件箱.
这有效一段时间,但在10分钟左右后它就会停止获取更新(不会抛出任何异常).
我正在寻找保持连接活着的建议.我是否需要第二个线程,其唯一的作用是睡眠并每10分钟更新一次idle()线程,还是有更简单/更好的方法?
提前致谢.
我有一个WPF DataGrid,其中一些数据绑定到LINQ to SQL实体类.一列是显示给定航班的空中时间的时钟,它是使用Flight的部分类中的逻辑计算的.我有一个定时器,每隔2秒调用datagrid.Items.Refresh来更新时钟.
刷新工作正常,但现在我正在添加键盘快捷键.使用键盘箭头浏览单元格可以在关闭计时器的情况下正常工作,但启用刷新计时器后,聚焦单元格(实际上是整个数据网格)将失去焦点.
我需要以某种方式保持焦点(首选)或在DataGrid聚焦时禁用计时器.我甚至无法让后者工作.我试过了:
if (!dataGrid.IsFocused)
dataGrid.Items.Refresh();
Run Code Online (Sandbox Code Playgroud)
和
if (!dataGrid.IsKeyboardFocused)
dataGrid.Items.Refresh();
Run Code Online (Sandbox Code Playgroud)
对于计时器,但即使数据网格被聚焦,这些属性也会返回false.
有任何想法吗?