-3

对于如何完成这个项目,我非常陌生并且非常困惑。该项目要求我们创建一个包含两个 ListBox 的表单——一个包含至少四个字体名称,另一个包含至少四个字体大小。如果用户未能做出选择,则让每个列表中的第一项成为默认选择。每个 ListBox 只允许一个选择。这是我开始遇到问题的地方;我不需要在消息中显示用户选择的内容,而是反映用户选择的字体大小和类型的消息。用户单击按钮后,以选定的字体和大小显示“Hello”。我需要帮助以获取在 C# Windows Visual Studio 2010 表单中以所需字体显示消息的按钮。我刚刚编写了一个基本代码来启动我,其中包括以下内容:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        //populate listbox1
        listBox1.Items.Add("Arial");
        listBox1.Items.Add("Calibri");
        listBox1.Items.Add("Times New Roman");
        listBox1.Items.Add("Verdana");

        //populate listbox2
        listBox2.Items.Add("8");
        listBox2.Items.Add("10");
        listBox2.Items.Add("12");
        listBox2.Items.Add("14");

        this.listBox1.SelectedIndexChanged += new System.EventHandler(this.listBox1_SelectedIndexChanged);
        listBox1.SelectedIndex = 0;

        this.listBox2.SelectedIndexChanged += new System.EventHandler(this.listBox2_SelectedIndexChanged);
        listBox2.SelectedIndex = 0;         
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        textBox1.Text = listBox1.SelectedItem.ToString();
    }

    private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        textBox1.Text = listBox2.SelectedItem.ToString();
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {

    }
}

}

由于这是该项目的开始,用户选择的字体名称和大小最终会以所选字体名称和大小产生一条消息。现在我试图从单击的按钮中引发呼叫,该按钮将在用户选择的字体和字体大小中显示消息“Hello”。任何建议将不胜感激。

4

2 回答 2

1

放置列表框的默认值:

        listBox1.SelectedItem = "Arial";
        listBox2.SelectedItem = "8";

或更好的“动态解决方案”:

      listBox1.SelectedIndex = 0;
      listBox2.SelectedIndex = 0;

以下代码将使文本字体和大小发生变化,具体取决于用户在列表框中选择的内容。

  private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        textBox1.Font = new Font(listBox1.SelectedItem.ToString(), Convert.ToInt32(listBox2.SelectedItem.ToString()));
    }

    private void listBox2_SelectedIndexChanged(object sender, EventArgs e)
    {
        textBox1.Font = new Font(listBox1.SelectedItem.ToString(), Convert.ToInt32(listBox2.SelectedItem.ToString()));
    }

编辑:您收到错误消息,因为您的文本框中可能没有文本。

TextBox1.Text ="this is some text"; 

将此添加到您的表单中。

于 2012-07-08T18:46:12.657 回答
1

您可以使用该ListBox.SelectedIndex属性来设置列表框的初始选择。例如,您可以添加以下代码行以在添加事件处理程序后显式选择列表框中的第一个项目:

this.listBox1.SelectedIndexChanged += new System.EventHandler (this.listBox1_SelectedIndexChanged);     
listBox1.SelectedIndex = 0;   // <--- set default selection for listBox1

this.listBox2.SelectedIndexChanged += new System.EventHandler (this.listBox2_SelectedIndexChanged);     
listBox2.SelectedIndex = 0;   // <--- set default selection for listBox2

默认情况下,a 的SelectedIndex属性ListBox为 -1,表示没有选择。

为了回答您的第二个问题,以所选字体和大小显示“Hello”,我假设我们可以简单地更改 textBox1 控件的字体。

首先,确保 textBox1 有一些文本;Form1调用后将此语句放入构造函数中InitializeComponent

textBox1.Text = "Hello!";

然后,修改事件处理程序以更改字体的字体和大小:

private void UpdateFont()
{
    if (listBox1.SelectedIndex == -1 || listBox2.SelectedIndex == -1)
        return;  // selection not complete yet, so do nothing

    string typeface = listBox1.SelectedItem.ToString();
    float size = Convert.ToSingle(listBox2.SelectedItem.ToString());

    textBox1.Font = new Font(typeface, size);
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)  
{  
    UpdateFont();
}  

private void listBox2_SelectedIndexChanged(object sender, EventArgs e)  
{  
    UpdateFont();
}  
于 2012-07-08T18:47:19.507 回答