1

我有 2 个不同的Forms. 我的第一个表单Form1是具有TextBox被调用的主表单textbox1。我的另一种形式被调用FontSettings并且应该被使用,因此Form1可以继承FontSettings数据。我正在尝试发送一个string2 integersfrom FontSettingsto Form1。它看起来像这样。

  • 字体设置

    Form1 form1 = new Form1();
    form1.insertFont(family, size, color);
    
  • 表格1

    public void insertFont(string a, int b, string c)
    {
        if (textBox1.SelectionLength > 0)
        {
            xx = textBox1.SelectedText;
            textBox1.SelectedText = textBox1.SelectedText.Replace(xx, "" + a + "\" + b + c + "a");    
        }
        else
        {
            textBox1.Paste("" + a + "\" + b + c + "a");
        }
    }
    

使用的字符串和两个整数都是public

有人请向我描述我做错了什么?

4

3 回答 3

0

您想从 forsettings 修改 form1 属性,一种方法是找到 form1 控件并直接修改如下

private void button1_Click(object sender, EventArgs e)
{
    TextBox t = Application.OpenForms["Form1"].Controls["textBox1"] as TextBox;
    t.Text = "some value here...";
    // do the same for the other two controls
    this.Close();
}
于 2013-09-13T06:07:04.577 回答
0

简单的。请参阅以下从“form1”打开 FontSettings 表单的代码

FontSettings newform = new FontSettings();
newform.ShowDialog();
MessageBox.Show(newform.MyString);
MessageBox.Show(string.Format("{0}", newform.MyInt1));
MessageBox.Show(string.Format("{0}", newform.MyInt2));

然后在 FontSettings 表单中,创建一些公共属性,以便可以从“form1”中引用它们

public string MyString { get; set; }
public int MyInt1 { get; set; }
public int MyInt2 { get; set; }

然后在一个按钮中单击执行以下操作:

private void button1_Click(object sender, EventArgs e)
{
    MyString = "some value here...";
    MyInt1 = 28;
    MyInt2 = 77;
    this.Close();
}
于 2013-09-13T02:07:17.420 回答
0

根据您的描述,听起来您正在制作像记事本这样的文本编辑器类型的应用程序。好吧,如果是这种情况,那么使用三个静态字段会容易得多。下面的代码将使这一点变得清晰。

继续在 Form1 类中定义三个静态字段,如下所示;

public static string family="";
public static int size=0;
public static string color="";

我猜你有三个 TextBoxes 和一个Close Buttonon 类FontSettings,如果是这样,那么将下面的代码添加到Click EventButton;

    if (!String.IsNullOrEmpty(textBoxFamily.Text))//Check if textBoxFamily is not empty.
    {
        Form1.family = textBoxFamily.Text;

        if (!String.IsNullOrEmpty(textBoxSize.Text))//Check if textBoxSize is not empty.
        {
            Form1.size = Convert.ToInt32(textBoxSize.Text);

            if (!String.IsNullOrEmpty(textBoxColor.Text))//Check if textBoxColor is not empty.
            {
                Form1.color = textBoxColor.Text;

                this.Close();//If everything happens correctly,close FontSettings.
            }
        }
    }

现在我们已经在 中声明了字段Form1,我们可以直接使用它们的值,就像这样;

public void insertFont()
{
    if (textBox1.SelectionLength > 0)
    {
        xx = textBox1.SelectedText;
        textBox1.SelectedText = textBox1.SelectedText.Replace(xx, "" + family + "\" + size + color + "a");    
    }
    else
    {
        textBox1.Paste("" + family + "\" + size + color + "a");
    }
}

希望这足以让您重回正轨。如果还有什么问题,请通知我。

于 2013-09-13T06:46:17.843 回答