Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用';否则';关于Gtk#2.0_C#_User Interface_If Statement_Events_Text - Fatal编程技术网

C# 如何使用';否则';关于Gtk#2.0

C# 如何使用';否则';关于Gtk#2.0,c#,user-interface,if-statement,events,text,C#,User Interface,If Statement,Events,Text,我是新来的。我在linux上与monodevelop一起使用C#。我创建了GUI并添加了标签。我可以通过按钮控制标签文本(当我单击按钮时,按钮的事件更改了标签文本)。但我不想用这个按钮。我希望独立于事件运行(没有按钮和单击,只使用条件)。是否可以在不使用任何对象事件的情况下运行事件?我想这样做: 例如: using System; using Gtk; public partial class MainWindow: Gtk.Window { public MainWindow () :

我是新来的。我在linux上与monodevelop一起使用C#。我创建了GUI并添加了标签。我可以通过按钮控制标签文本(当我单击按钮时,按钮的事件更改了标签文本)。但我不想用这个按钮。我希望独立于事件运行(没有按钮和单击,只使用条件)。是否可以在不使用任何对象事件的情况下运行事件?我想这样做:

例如:

using System;
using Gtk;

public partial class MainWindow: Gtk.Window
{


public MainWindow () : base (Gtk.WindowType.Toplevel)
{

    Build (); 

}

protected void OnDeleteEvent (object sender, DeleteEventArgs a)
{
    Application.Quit ();
    a.RetVal = true;

    int b = 5;
    if (b == 5) 
    {

    label2.Text="hello";
    }

    else label2.Text="world"; 
}
}
我的目标是在活动之外更改标记(例如:不使用按钮)。我搜索了一下,但今天早上什么也没找到。谢谢你的时间

致意


Faruk

我假设当您使用monodevelop(我使用vs)时,该语言没有任何差异,因此我相信您的代码应该正常工作。我将发布我的示例:

int a = 2;
Label L = new Label();      //only for demonstration
if (a == 0)
{
    L.Text = "0";
}
else if (a == 1)
{
    L.Text = "1";
}
else
{
    L.Text = "else";
}
在我的例子中,标签的名称是L

编辑

我想OP是在WPF工作,因为我的答案不适合他 在WPF中,只有文本控件具有.text属性,其他所有控件都使用.Content 为了更清楚,我还添加了WPF回答

int a = 2;
Label L = new Label();      //only for demonstration
if (a == 0)
{
    L.Content = "0";
}
else if (a == 1)
{
    L.Content = "1";
}
else
{
    L.Content = "else";
}

我找到了答案。如果不想使用事件,则应将代码写入
公共主窗口():base(Gtk.WindowType.Toplevel)
。编码如下:

using System;
using Gtk;

public partial class MainWindow: Gtk.Window
{

public MainWindow () : base (Gtk.WindowType.Toplevel)
{
 Build (); 
  int b = 5;
    if (b == 5) 
    {
    label2.Text="hello";
    }
    else label2.Text="world"; 
}

  protected void OnDeleteEvent (object sender, DeleteEventArgs a)
  {
    Application.Quit ();
    a.RetVal = true; 
   }
}

谢谢你的时间。

不清楚你在问什么。您想在何处使用此
if/else
语句?在
按钮中单击事件
?何时加载表单?其他地方?逻辑似乎很好,我只是不明白您想在哪里实现它。欢迎使用SO。您遇到了什么问题?实际上,我从serialport读取数据,并希望将传入的数据写入GUI。我想也许我可以用if/Else来做这件事,这听起来是完全可能做到的。然而,在实现它时,您遇到了什么问题仍然不清楚。你能告诉我们吗?我怎样才能更改标签的文本。我希望我的数据写在标签的文本上。只是我不明白,也无法理解。或者你有什么建议?如何将传入数据写入GUIHi,@Shmosi。不幸的是,你所写的并不能真正回答这个问题。你发布的代码几乎完全是OP写的,你没有提供任何解释来加深OP的理解。我不太清楚他在问什么,但我认为他想要一个if/else语句,我只是想提供一个快速的答案:)我尝试了这个,但没有用。我不知道此代码应该使用哪个标签的事件。我假设您正在WPF中工作,我更新了我的答案以适合WinForms和WPF