小编And*_*ers的帖子

在C#WPF中,为什么我的TabControl的SelectionChanged事件经常被触发?

我有一个标签式GUI,每个标签包含一个框架.在其中一个框架中有一个DataGrid.当用户选择此选项卡时,我需要对datagrid进行排序,因此我使用TabControl SelectionChanged事件来触发排序.但是,每次从DataGrid中选择一个项时,此事件都会触发,即使选项卡本身保持不变.

我尝试了很多不同的事件:GotFocus用于TabItem的TabItem RequestBringIntoView

但他们似乎都遇到了这个问题.是什么造成的?

c# wpf tabcontrol tabitem

54
推荐指数
2
解决办法
4万
查看次数

确定两个DateTimes之间的差异,仅计算开放时间

对于我们在C#中的支持软件,我需要确定两个DateTime之间的时间跨度,但我只想计算开放时间(即工作日从09:00到17:00).

因此,例如,如果第一个DateTime是15/02/2011 16:00而第二个是16/02/2011 10:00,则该方法将返回2个小时.

任何帮助是极大的赞赏!

c# datetime

15
推荐指数
3
解决办法
9196
查看次数

JavaMail:保持IMAPFolder.idle()活着

我正在制作一个需要监控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()线程,还是有更简单/更好的方法?

提前致谢.

java imap jakarta-mail

14
推荐指数
4
解决办法
2万
查看次数

刷新WPF DataGrid而不会丢失单元格焦点

我有一个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.

有任何想法吗?

wpf datagrid focus refresh timer

8
推荐指数
1
解决办法
8598
查看次数

标签 统计

c# ×2

wpf ×2

datagrid ×1

datetime ×1

focus ×1

imap ×1

jakarta-mail ×1

java ×1

refresh ×1

tabcontrol ×1

tabitem ×1

timer ×1