显示标签从一种形式到另一种形式

时间:2018-09-01 12:59:39

标签: c#

我的软件中有一个表单正在显示总值(它是label),我想在另一表单上显示该label的值。

这是我的代码:

public void PresmetajTotal()
{   
    for (var i = 0; i < dataGridView1.Rows.Count; i++)
    {
        vkp += Convert.ToInt64(dataGridView1.Rows[i].Cells[4].Value);

         lblTotal.Text = vkp.ToString();
    }
}

在另一种形式上,我创建了这个:

 private void Change_Load(object sender, EventArgs e)
 {
     Prodazba prodaz = new Prodazba();
     label4.Text = prodaz.lblTotal.Text();
 }

我得到的错误是: CS0122'Prodazba.lblTotal'由于其保护级别而无法访问

2 个答案:

答案 0 :(得分:1)

Prodazba格式添加一个公共属性,该属性将返回标签的值。

public partial class Prodazba()
{
    public string Total { get { return lblTotal.Text; } }

    //....
}

然后按以下方式访问它:

private void Change_Load(object sender, EventArgs e)
{
    Prodazba prodaz = new Prodazba();
    label4.Text = prodaz.Total;
}

答案 1 :(得分:0)

两件事:

  1. 您正在使用to()
  2. 创建新表单
  3. 您的标签是私有的

第二个更容易处理。在表单编辑器或设计器代码中,将访问级别设置为new Prodazba()internal

对于第一个,您可以根据创建表单的方式采取几种方法。如果您的第一个表单加载了Prodazba,则可以:

public

然后...

public partial class YourMainForm
{
    Prodazba prodaz;

如果标签可内部访问,则可以从其中运行任何事件处理程序,例如private void Change_Load(object sender, EventArgs e) { prodaz = new Prodazba(); prodaz.Load += delegate {this.label4.Text = prodaz.Total}; prodaz.Show(); }