一个通用对话框

介绍 今天,我决定我需要一个新的对话框与用户沟通09我写作,这就是我发现没有现成的按钮一个消息框的文本“充电”或“取消攻击”。挣扎在找出如何把事情做好,我把表格放在一起,并发现我可以锁系统直到处理或关闭,通过设置这种形式的主人给调用的形式。但是,关闭这个消息框丢弃引用变量的值“回答”我传递给它,让它毫无用处。 我决定,这是一个问题。解决解决这个问题后,我来在线这个网站,发现几个选项,有自己的并发症,我得到了一些帮助从MSDN的c#一般论坛给我答案我所需09(点击这里),而是一个更一般的想法是新生的。 在这篇文章中,我将解释如何使用classMessagebox,它允许用户方便地调用他们想要尽可能多的按钮,叫他们任何幻想,并给每个按钮和/或主要文本的字体。 五步计划 上图的结果测试表单的按钮事件处理程序,如图所示: 隐藏,复制Code

private void btnTestClassMessageBox_Click(object sender, EventArgs e)
{
    /// how to use
    /// 1) instantiate a new messagebox
    ///         input parameters : title, 
    ///                            text, 
    ///                            string of buttons separated by commas
    /// 2) set its owner so that the call to ShowDialog() 
    ///         locks the system onto this message box 
    ///         until it is closed or disposed
    /// 3) call ShowDialog();
    /// 4) use the Reply property to record which button was pressed
    /// 5) dispose of the messagebox

    classMessageBox msgBox
        = new classMessageBox("Message Box",
                              "This is a test",
                              "Button 1,Button 2,Vote Quimbey");
    msgBox.Owner = this;
    msgBox.ShowDialog();
    string reply = msgBox.Reply;
    msgBox.Dispose();
    Text = reply;
}

的兴趣点 由于标签和按钮都是公共的数组类,你可以改变他们的字体在调用ShowDialog之前()。这些对象有事件处理程序调整时形成他们的字体改变,以便添加这两条线,例如: 隐藏,复制Code

msgBox.btns[2].Font = new Font("ms sans-serif", 18);
msgBox.lbl.Font = new Font("Lucida Console", 18, FontStyle.Italic);

给你: 对话框的答复是一样的文字写在用户按下的按钮。只要你没有相同的两个按钮的文本,你就会知道用户想要什么。 简单、灵活、易于使用! 它是如何工作的 没有在这里解释。这都是很简单的。真的可能是困难的唯一部分是调整()函数,但首先,让我从头开始,给你一个简短的参观。 类继承形式。它有一个标签和一个空数组的按钮,和接收三个参数都是字符串。回复是一个全局变量当作一个属性都有自己的“得到”习惯。 实例化一个对话框时,前两个参数是简单的写在属于它们的,第一个是表单的文本的标题,第二个参数是设置为我们的文本标签。你和我到目前为止吗?什么也没有做。 第三个参数是有趣的开始的地方。这个字符串分为一个字符串数组使用逗号作为除数。这个数组字符串通过,然后运行一次,和发送的字符串作为参数的函数生成的所有按钮,设置这些字符串作为每个按钮的文本。一旦创建的所有按钮,完成FontChange和点击事件处理函数,并列入全球一系列的按钮,然后调整开始。 此时,马上调整函数,这个函数然后把按钮从左到右,从屏幕的左边缘,AutoSize设置为true, AutoSizeMode ShrinkAndGrow。一旦这样做,我们知道我们的形式,所以我们将这个值设置为适合所有的按钮上的形式。然后,将标签的AutoSize值设置为true,我们得到一个衡量标签的宽度。然后调整函数计算多少行文本这个标签需要如果它的宽度大于形式的宽度。现在,我们设置标签的AutoSize假,调整其高度以适应我们假定它将需要的行数(这并不占任何返回运输标签的文本中的人物)的行数乘以标签的字体高度。接下来,所有必须将下面的按钮标签,最后形成的高度设置为适合的按钮。 ,我们做了调整这种形式。 当其中一个按钮的字体(或标签)发生了变化,那么该对象的规模可能会改变,把我们调整形成的边缘颤抖。但是,如果我们称之为resizeForm直接从FontChange事件处理程序,然后,对象的大小不会已经调整了,所以我们必须等待,并调用该对象的刷新()并不能解决你的问题;为了得到这个工作,你必须得到对象调整大小以适应其新的字体,有时我们需要的是时间…所以出来计时器。事件处理程序调用initResize,创建了一个定时器,定时器的间隔设置为5毫秒的大ole”价值,去旅行。5毫秒到电脑,当然,相当于接近永恒的东西,所以这给对象足够的时间来调整它的大小,以适应其新的字体,和旅行时间这个定时器及其Tick事件处理,表单可以调整大小。 投票Quimbey ! 本文转载于:http://www.diyabc.com/frontweb/news8257.html

原文地址:https://www.cnblogs.com/Dincat/p/13467673.html