Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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# 在C中创建无模式子窗体#_C# - Fatal编程技术网

C# 在C中创建无模式子窗体#

C# 在C中创建无模式子窗体#,c#,C#,我目前正在开发一个桌面应用程序(主窗体),它上载数据以执行一些基本计算 我想包括一个框弹出一旦用户上传了他的文件(例如:“上传已完成”)。此框应具有两个特征: 它应该是无模式的,不需要输入,它只是一个 信息箱 它应该自动消失(基于计时器) 我已经找到了第二点的解决方案,但是我仍然需要创建我想要弹出的表单。由于我不希望它有按钮,MessageBox不适合 我知道我可以创建一个无模式表单,如下所示: Public class test { Form f = new Form(); f.sho

我目前正在开发一个桌面应用程序(主窗体),它上载数据以执行一些基本计算

我想包括一个框弹出一旦用户上传了他的文件(例如:“上传已完成”)。此框应具有两个特征:

  • 它应该是无模式的,不需要输入,它只是一个 信息箱
  • 它应该自动消失(基于计时器)
  • 我已经找到了第二点的解决方案,但是我仍然需要创建我想要弹出的表单。由于我不希望它有按钮,MessageBox不适合

    我知道我可以创建一个无模式表单,如下所示:

     Public class test
     {
     Form f = new Form();
     f.show()
     }
    
    从这一点开始,如何插入与messageBox样式非常相似的字符串文本和字符串标题


    谢谢

    首先,您可以创建一个类似于以下内容的表单,它将与您的消息框等效

    然后您可以像这样更改新的
    Form2
    构造函数:

    public partial class Form2 : Form
    {
        public Form2(string title, string message)
        {
            InitializeComponent();
            this.Text = title;
            label1.Text = message;
        }
    }
    
    this.Text
    是您的标题,然后使用
    label1.Text
    设置标签文本

    然后,在启动新表单时,请执行以下操作:

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2("header","message");
        f2.Show();
    }
    
    这就是你将得到的:


    我想这可以让你知道如何开始

    public class MyDialog: Form
    {
        public MyDialog(string prompt, int timeout)
        {
            RichTextBox rtb = new RichTextBox();
            rtb.Dock = DockStyle.Fill;
            rtb.Font = new Font("Times new Roman", 14f, FontStyle.Bold);
            rtb.Text = prompt;
            this.Controls.Add(rtb);
    
            var _Timer = new System.Windows.Forms.Timer()
            {
                Enabled = true,
                Interval = timeout
            };
            _Timer.Tick += (s, e) => this.Close();
            this.Show();
        }
    }
    
    您所需要做的就是创建如下表单

    var f = new MyDialog("It works", 5000);
    

    定义自己的表单类,为Title和Message添加两个属性。在调用Show()之前将它们设置为文本;谢谢,这对我来说很有效。我会把它标记为答案!出于好奇,最后一个问题是,是否可以省略/禁用richtextbox中的打字机?您的意思是设置为只读吗?我已经将其设置为只读,但打字机仍然显示(尽管您不能再修改richtextbox内容)。这只是一个美学问题,我想知道是否有可能隐藏打字机?@DavidRaths您可以使用
    标签来代替RTB。太棒了!非常感谢你!