小编Xar*_*uth的帖子

C#Outlook没有移动所有电子邮件

我正在使用Outllok Interop将电子邮件从一个文件夹移动到另一个文件夹(在获取所有附件之后,但这有效)但它不会复制所有电子邮件.我已经尝试过等待,但它没有效果.首先它会移动6,然后移动3,然后移动1.可以有人告诉我它为什么不移动它们?

相关代码如下:

Application oOutlook = new Application();
NameSpace oNs = oOutlook.GetNamespace("MAPI");

Recipient oRep = oNs.CreateRecipient("ContentHelp");
MAPIFolder inbox = oNs.GetSharedDefaultFolder(oRep, OlDefaultFolders.olFolderInbox);

MAPIFolder nihSub = inbox.Folders["NIH"];
MAPIFolder nihArchive = inbox.Folders["NIHarchive"];
Items nihItems = nihSub.Items;
MailItem moveMail = null;
//inboxItems = inboxItems.Restrict("[Unread] = false");

int increment = 0;

try
{
    foreach (object collectionItem in nihItems)
    {
        moveMail = collectionItem as MailItem;
        if (moveMail != null)
        {
            Console.WriteLine("Moving {0}", moveMail.Subject.ToString());
            string titleSubject = (string)moveMail.Subject;
            moveMail.Move(nihArchive);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# outlook

4
推荐指数
1
解决办法
2411
查看次数

需要覆盖 XMLWriter 的方法

如果值为空,我需要覆盖 XMLWriter 的方法“WriteElementString”以不写入元素,下面的代码不起作用,尝试了overridenew关键字,但它仍然转到框架方法。

public static void WriteElementString(this XmlWriter writer,
                                      string localName,
                                      string value)
{
    if (!string.IsNullOrWhiteSpace(value))
    {
        writer.WriteStartElement(localName);
        writer.WriteString(value);
        writer.WriteEndElement();
    }
}
Run Code Online (Sandbox Code Playgroud)

答案很接近,但正确的解决方案是:

public abstract class MyWriter : XmlWriter
{
    private readonly XmlWriter writer;
    public Boolean skipEmptyValues;

    public MyWriter(XmlWriter writer)
    {
        if (writer == null) throw new ArgumentNullException("Writer");
        this.writer = writer;
    }

    public new void WriteElementString(string localName, string value)
    {
        if (string.IsNullOrWhiteSpace(value) && skipEmptyValues)
        {
            return;
        }
        else
        {
            writer.WriteElementString(localName, value);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# overriding

4
推荐指数
1
解决办法
1833
查看次数

为什么c#Linq在包含List的List中使用引用而不是值

我遇到这个简单代码的问题,我不明白为什么c#这样做.

问题似乎是c#在列表中使用列表时使用Linq表达式引用而不是值.

在数字循环中,我根据列表选择数字,它们都存在,所以所有数字都应该添加到列表{1,2,3}中.

当您在控制台中看到数字循环中显示{1,2,3}的输出时,行为正常.

问题在于列表的循环,在这里似乎Linq只将最后一个数字添加到列表中,因此它输出{3,3,3}.

我知道我不需要列表中的整数列表,但这只是为了证明这一点非常奇怪,这是一个已知的"错误"吗?

编辑:这似乎是它应该在5.0之前的c#中工作.在C#5.0(VS2012 +编译器)中,此行为已被修改为我所期望的

static void Main()
{
    var list = new List<IEnumerable<int>>();
    var numbers = new[] {1, 2, 3};
    var numbers2 = new[] {1, 2, 3};

    foreach (var number in numbers)
    {
        var result = from s in numbers2
                     where s == number
                     select s;

        Console.WriteLine(result.First()); // outputs {1,2,3}
        list.Add(result);
    }

    foreach (var num in list)
    {
        Console.WriteLine(num.First()); // outputs {3,3,3}
    }
}
Run Code Online (Sandbox Code Playgroud)

产量

1 2 3 3 3 3

c# linq list

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

验证 Windows 窗体问题中文本框上的数字 INTEGER

我在 Windows 窗体上有文本框,我只想在此文本框中插入数字。为此我使用以下 c# 代码

private void ChildAge_TextChanged(object sender, EventArgs e)
{
    int i;
    if (!int.TryParse(ChildAge.Text, out i))
    {
        MessageBox.Show("Plaese enter a valid Age");
    }    
}
Run Code Online (Sandbox Code Playgroud)

它正在工作,但问题是,在显示消息后,当我退格时,内容和文本框变为,在这种情况下,此消息框也会再次显示

c# winforms

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

从委托中捕获所有返回值

我正在玩代表和匿名方法,并遇到以下代码:

delegate int IntegerGenerator();
static void Main()
{
    IntegerGenerator numberGenerator;

    numberGenerator = () =>
    {
        Console.WriteLine("returns 7");
        return 7;
    };
    numberGenerator += () =>
    {
        Console.WriteLine("returns 3");
        return 3;
    };

    // This will always return 3
    var num = numberGenerator();

    Console.WriteLine("Return value: {0}", num);
}
Run Code Online (Sandbox Code Playgroud)

我感兴趣的是委托的Invocation列表中所有方法的返回值.但是,似乎唯一给出的值来自要附加到委托的最后一个方法.一种可能的解决方法是输入集合并只将结果添加到集合中.但是,由于委托的返回类型,这似乎不是解决此问题的正确方法.

如何从委托中附加的方法捕获所有返回值?

c# delegates

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

正确设置MdiParent背景图像

我使用下面的代码来设置MdiParent表单的背景图像,它运行良好,但是当我点击最大化按钮时,BackgroundImage在右侧和底部边缘重复(即右侧和底侧图像部分重复),怎么做我避免这种情况并正确显示图像?

public Parent()
{
    InitializeComponent();

    foreach (Control ctl in this.Controls)
    {
        if (ctl is MdiClient)
        {
            ctl.BackgroundImage = Properties.Resources.bg;
            ctl.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# winforms

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

如何在c#中以较短的方式写出其他条件?

我想写一下如果c#中的Else条件更短,你可以在下面观察我的代码吗'那么冗长..我想要用更短的方式写,帮助我任何人都知道.我们可以使用其他任何方式来写它吗?

int paymentType;
if (lblPayment.Text == "Credit")
{
    paymentType = 1;
}
else if (lblPayment.Text == "Open Invoice")
{
    paymentType = 2;
}
else if (lblPayment.Text == "COD")
{
    paymentType = 3;
}
else if (lblPayment.Text == "Check")
{
    paymentType = 4;
}
else if (lblPayment.Text == "Paypal")
{
    paymentType = 5;
}
else if (lblPayment.Text == "Money Order")
{
    paymentType = 6;
}
else if (lblPayment.Text == "Other")
{
    paymentType = 7;
}
Run Code Online (Sandbox Code Playgroud)

c#

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

WPF禁用命令一段时间它运行

我需要禁用按钮一段时间才能运行.我有这个代码:

RelayCommand.cs这是我的命令类.

class RelayCommand : ICommand
{
    readonly Action<object> _execute;
    readonly Predicate<object> _canExecute;

    public RelayCommand(Action<object> execute)
        : this(execute, null)
    {
    }

    public RelayCommand(Action<object> execute, Predicate<object> canExecute)
    {
        if (execute == null)
        {
            throw new ArgumentNullException("execute");
        }

        _execute = execute;
        _canExecute = canExecute;
    }

    public bool CanExecute(object parameter)
    {
        return _canExecute == null ? true : _canExecute(parameter);
    }

    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }

    public void Execute(object parameter) …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml async-await

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

如何在wpf中实现背景图像的连续移动

我在我的wpf应用程序中有一个背景图像,我希望实现背景图像连续移动的效果.下面的代码可以实现简单的效果,但是当图片结束的时间再次移过时,我想让这张图片运动的效果一直没有停止的现象.

void StartBackgroudMove()
{
    Storyboard sb = new Storyboard();
    DoubleAnimation TranslateXExtendAnimation = new DoubleAnimation() { From = 0, To = -100, Duration = TimeSpan.FromMilliseconds(2500) };
    Storyboard.SetTarget(TranslateXExtendAnimation, BackgroundImage);
    Storyboard.SetTargetProperty(TranslateXExtendAnimation, new PropertyPath("(FrameworkElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"));
    sb.Children.Add(TranslateXExtendAnimation);
    sb.FillBehavior = FillBehavior.Stop;
    sb.Completed += (s, args) =>
    {
        this.StartBackgroudMove();
    };
    sb.Begin();
}
Run Code Online (Sandbox Code Playgroud)

c# wpf

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

有效字符串的日期时间转换失败

我有简单的一行代码

var startYearString = DateTime.Parse("03/21/2014").Year;
Run Code Online (Sandbox Code Playgroud)

我希望这可以工作,但它会抛出这样的错误

System.FormatException was unhandled by user code
HResult=-2146233033
Message=String was not recognized as a valid DateTime.
Source=mscorlib
StackTrace:
    at System.DateTime.Parse(String s)
    at ConnectBLL.usercontrols.users.UserProfile.Page_Load(Object sender, EventArgs e)
    at System.Web.UI.Control.LoadRecursive()
    at System.Web.UI.Control.LoadRecursive()
    at System.Web.UI.Control.LoadRecursive()
    at System.Web.UI.Control.LoadRecursive()
    at System.Web.UI.Control.LoadRecursive()
    at System.Web.UI.Control.LoadRecursive()
    at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
InnerException: 
Run Code Online (Sandbox Code Playgroud)

我不知道出了什么问题?

c# asp.net datetime

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

标签 统计

c# ×10

winforms ×2

wpf ×2

asp.net ×1

async-await ×1

datetime ×1

delegates ×1

linq ×1

list ×1

outlook ×1

overriding ×1

xaml ×1