0

私はひどく新しいので、私がやろうとしていることで全体的に完全に軌道から外れているかもしれません.

質問の仕方がよくわかりません。私の英語は少し難しいです。

しかし、これを含む2つのファイルがあります:

frmMain.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {
            Class1 cls = new Class1();
            cls.Visibility();
        }
    }
}

そして、これを含む別のファイル:

Class1.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication1
{
    public partial class Class1
    {
        public void Visibility()
        {
            frmMain c = new frmMain();
            c.label1.Visible = false;
        }
    }
}

私が取得しようとしているのは、プログラムを実行して label1 をクリックすると、それが消えてほしいということです。しかし、そうではありません。エラーなどは発生しません。どんな助けでも大歓迎です:)。

前もって感謝します。

4

6 に答える 6

0

新しい別のフォームをインスタンス化しています。これは、ラベルが非表示になっていることを意味します..しかし、作成した非表示のフォーム上にあります。

現在のフォーム インスタンスを他のクラスに渡す必要があります。

public void Visibility(frmMain mainForm) {
    mainForm.label1.Visible = false;
}

次に、次のように呼び出します。

new Class1().Visibility(this);
于 2013-11-14T09:54:43.113 に答える
0

あなたがしていることは、ウィンドウの 2 番目のインスタンスを作成していることです (ウィンドウを表示していないため、わかりにくいかもしれません)。次に、2 番目のウィンドウでラベルを非表示にします。おそらく最初に意図したものではありません。

あなたがする必要があるのは、元のフォームへの参照を呼び出しているメソッドに渡すか、(何をしたいかによって) 非表示にする必要があるコントロールへの参照を渡すことです。

Class1:

public void Visibility(Control controlToHide)
{
    controlToHide.Visible = false;
}

frmMain.cs で

new Class1.Visibility(this.label1)

さらにいくつかのコメント:

  • 命名: Class1、label1 などの名前は使用しないでください。これはおそらく「いじってみる」ようなコードだと思いますが、そのような名前は、後で自分のコードに戻ろうとする (または他の人に見てもらう) ときに完全に判読できません。
  • 命名 2: メソッドが何をするかを説明する名前を付けてみてください - HideControl、またはHideLabelよりもはるかに優れていますVisiblity
  • 参照、インスタンス、パラメーターなどについて学ぶために、いくつかの基本的な C# チュートリアルを読みたいと思うかもしれません。

それ以外は、幸せなC#-ing :)

于 2013-11-14T09:55:04.270 に答える