gpt4 book ai didi

c# - 只有assignment, call, increment, decrement, new object expression可以作为语句使用 : Messagebox

转载 作者:太空宇宙 更新时间:2023-11-03 20:11:13 25 4
gpt4 key购买 nike

这是我想要实现的目标

  if( this.BeginInvoke((Action)(
() => MessageBox.Show("Test",
MessageBoxButtons.YesNo) == DialogResult.No)))

上面给出了错误。我尝试将委托(delegate)分离到外部方法,如

delegate void test(string text);
private void SetTest(string text)
{
if(MessageBox.Show(text,"", MessageBoxButtons.YesNo) == DialogResult.No)

}

但这违反了我需要委托(delegate)的真正原因。我找到了第一个适合我的作品,但我不知道如何将它放在 if/else 语句中。请以更好的方式帮助我实现如下所示的目标。

  if(this.BeginInvoke((Action)(
() => MessageBox.Show("Test",
MessageBoxButtons.YesNo) == DialogResult.No)))

最佳答案

另一种变体....伙计,这很丑:

if ((bool)this.Invoke((Func<bool>)delegate
{
return MessageBox.Show("Test Message",
"Test Title",
MessageBoxButtons.YesNo) == DialogResult.No;
}))
{
Console.WriteLine("No was indeed selected.");
}

这应该适用于任何版本的 C#:

private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread T = new System.Threading.Thread(Foo);
T.Start();
}

delegate bool SetTestDelegate(string text);
private bool SetTest(string text)
{
return (MessageBox.Show(text, "", MessageBoxButtons.YesNo) == DialogResult.No);
}

private void Foo()
{
if ((bool)this.Invoke(new SetTestDelegate(SetTest), new object[] {"test"}))
{
Console.WriteLine("No was indeed selected.");
}
}

编辑:您可以将该代码重构为更有用的东西......

private void button1_Click(object sender, EventArgs e)
{
System.Threading.Thread T = new System.Threading.Thread(Foo);
T.Start();
}

private void Foo()
{
if (Response("test") == System.Windows.Forms.DialogResult.No)
{
Console.WriteLine("No was indeed selected.");
}
}

delegate DialogResult ResponseDelegate(string text);
private DialogResult Response(string text)
{
if (this.InvokeRequired)
{
return (DialogResult)this.Invoke(new ResponseDelegate(Response), new object[] { "test" });
}
else
{
return MessageBox.Show(text, "", MessageBoxButtons.YesNo);
}
}

关于c# - 只有assignment, call, increment, decrement, new object expression可以作为语句使用 : Messagebox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19898335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com