小编Mar*_*cin的帖子

奇怪地使用"和"/"或"运算符

我正在尝试学习python,并且遇到了一些既好又短的代码,但并不完全有意义

背景是:

def fn(*args):
    return len(args) and max(args)-min(args)
Run Code Online (Sandbox Code Playgroud)

我得到它正在做的事情,但为什么python这样做 - 即返回值而不是True/False?

10 and 7-2
Run Code Online (Sandbox Code Playgroud)

返回5.同样,更改和将导致或将导致功能更改.所以

10 or 7 - 2
Run Code Online (Sandbox Code Playgroud)

会回来10.

这是合法/可靠的风格,还是有任何问题?

python operators logical-operators

84
推荐指数
4
解决办法
9622
查看次数

WPF文本框在VSTO/Outlook加载项中的ElementHost中托管时不允许撤消

我有一个Outlook插件(VSTO),在Outlook表单区域我有一个ElementHost中的WPF用户控件.我有一个问题,即我的用户控件中的TextBox没有撤销功能......在某些配置中.特别是在Windows 7/Outlook 2007中,撤消(即Ctrl-Z)不起作用,即使剪切/复制等都可以正常工作.有趣的是Windows 8/Outlook 2010撤消确实有效.

TextBox XAML是:

<TextBox 
    Name="txtnote" 
    VerticalScrollBarVisibility="Auto" 
    SpellCheck.IsEnabled="True"  
    Text="Topic notes..." 
    TextWrapping="Wrap" 
    AcceptsReturn="True" />
Run Code Online (Sandbox Code Playgroud)

注意:我已尝试设置以下属性以使其工作但无济于事:IsUndoEnabled ="True"UndoLimit =" - 1"

任何人都可以建议为什么会发生这种情况以及我能做些什么来使其按预期工作?

更新2014年1月7日. 我在文本框中添加了以下KeyBinding:

<TextBox.InputBindings>
    <KeyBinding Command="ApplicationCommands.Undo" Key="Z" Modifiers="Control" />
    <KeyBinding Command="ApplicationCommands.Redo" Key="Y" Modifiers="Control" />
    <KeyBinding Command="ApplicationCommands.Undo" Key="G" Modifiers="Alt" />
</TextBox.InputBindings>
Run Code Online (Sandbox Code Playgroud)

结果是 - Cntl-Z/Cntrl-Y仍然不起作用,但Alt-G确实有效!

.net c# wpf outlook vsto

17
推荐指数
1
解决办法
753
查看次数

如何覆盖ruby case相等运算符?(===)

我有一个类,我想在case语句中比较字符串和符号,所以我认为我只是覆盖我的类的===()方法,所有都是金.但是在case语句中永远不会调用我的===()方法.有任何想法吗?

以下是一些示例代码,以及irb会话中发生的情况:

class A
   def initialize(x)
      @x=x #note this isn't even required for this example
   end
   def ===(other)
      puts "in ==="
      return true
   end
end
Run Code Online (Sandbox Code Playgroud)

irb(main):010:0> a = A.new("hi")
=>#
irb(main):011:0> case a
irb(main):012:1>当"hi"然后是1
irb( main):013:1> else 2
irb(main):014:1> end
=> 2

(它从不打印消息,无论如何应该总是返回true)注意理想情况下我想做一个

def ===(other)
          #puts "in ==="
          return @x.===(other)
end
Run Code Online (Sandbox Code Playgroud)

提前致谢.

ruby overloading

6
推荐指数
1
解决办法
5321
查看次数

VSTO - C#中的Outlook事件处理程序

我需要为Outlook预约项显示自定义表单而不是默认检查器表单.我想在C#中这样做.

devx上有一个很好的教程,但它使用VB,我想使用C#.所以我把代码翻译成了C#,我遇到了一个问题,我需要覆盖(被调用的)Open事件处理程序.在上面提到的tute中,他们说要在VB中执行以下操作:AppointmentItemmcAI

Private Sub tyAI_Open(ByRef Cancel As Boolean) Handles tyAI.Open
    Cancel = True
End Sub
Run Code Online (Sandbox Code Playgroud)

我翻译为:

private void mcAI_Open(out bool Cancel)
{
    Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)

(注意我已经尝试了这个有和没有outref参数,并且有/没有对象作为第一个参数)

但是我们需要注册这是一个事件,所以我输入了这段代码:

mcAI.Open += 
    new Microsoft.Office.Interop.Outlook.ItemEvents_10_OpenEventHandler(mcAI_Open);
Run Code Online (Sandbox Code Playgroud)

但是当我收到错误时,我无法编译它:

No overload for 'mcAI_Open' matches delegate 'Microsoft.Office.Interop.Outlook.ItemEvents_10_OpenEventHandler'

对我应该如何注册我的函数的任何想法Open的事件AppointmentItem?提前致谢.

(顺便说一句,有一个MSDN QA,它表明我的代码应该可以运行,但我仍然卡住了.)

.net c# outlook vsto

3
推荐指数
1
解决办法
3288
查看次数

Outlook AppointmentItem 写入事件 - 执行多少次

保存约会项目(或特别是会议)时,我需要执行一些活动。

我想要的是,一旦用户填写了信息并单击“发送”,Outlook 就会执行该操作,并且我的代码会执行一次。

然而我发现,写入事件发生多次 - 至少两次,有时更多(例如在更新中)。

这对我来说是一个问题,因为我有一个对象需要在序列化之前进行更新,并且我不想多次进行更新和序列化。

以前有人遇到过这个问题吗?有没有比 Appointmentitem.write 更好的方法?

outlook vsto

3
推荐指数
1
解决办法
2203
查看次数

如何从单个出现的Outlook约会系列主

当预约实例打开时,我需要获得会议系列的主要约会.

我尝试了以下(currentAppointment变量的类型为AppointmentItem)

DateTime sd = currentAppointment.GetRecurrencePattern().PatternStartDate;
DateTime st = currentAppointment.GetRecurrencePattern().StartTime;

AppointmentItem ai = currentAppointment.GetRecurrencePattern().GetOccurrence(sd+st.TimeOfDay);
Run Code Online (Sandbox Code Playgroud)

然而,虽然这让我获得了该系列中的第一个约会,但它有一个复制状态为olApptOccurrence.

我怎样才能获得对olApptMaster的引用 - 即会议系列?

outlook vsto outlook-object-model

2
推荐指数
1
解决办法
1668
查看次数