2017-03-02 48 views
0

私はちょうどC#で始まったばかりですが、これは前にここで尋ねられたものですが、複雑な例はすべて私がまだ理解できなかったものです。ここに私の簡単な例があります。他のクラスのC#ListBox.Items.Add

追加されたクラスからリストボックスに文字列を追加しようとしています。それは私が何が起こっていないと仮定罰金コンパイルするが、 "TEST" はリストボックス

のForm1.csに追加

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

     private void button1_Click(object sender, EventArgs e) 
     { 
      ListBoxAdder myAdder = new ListBoxAdder(); 
      myAdder.Testing(); 
     } 

     private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
     { 

     } 
    } 
} 

ListBoxAdder.cs

namespace WindowsFormsApplication1 
{ 
    class ListBoxAdder : Form1 
    { 
     public void Testing() 
     { 
      listBox1.Items.Add("TEST"); 
     } 
    } 
} 

ません "ListBoxAdder"の別のインスタンスを作成するためですか?しかし、Testing()を静的にしたり、listBox1へのアクセス権がないため、静的にすることはできませんでした。

+0

はあなたのフォームを示すアレント? myAdder.Show()? – NicoRiff

+1

なぜlistbox1をテスト関数に渡さないのですか? Form1から継承する必要はありません。 – user2773289

+0

コントロールの名前をよりよく指定してください。そして私はあなたが両方のフォームのリストボックスを持っていると仮定します。彼らは別々の実体であり、お互いに関係がありません。なぜあなたはこれのために別のクラス/フォームが必要ですか? –

答えて

1
namespace WindowsFormsApplication1 
{ 
    class ListBoxAdder 
    { 
     ListBox listBox; 

     public ListBoxAdder (ListBox listBox) 
     { 
      this.listBox = listBox; 
     } 

     public void Testing() 
     { 
      listBox.Items.Add("TEST"); 
     } 
    } 
} 

そして:

private void button1_Click(object sender, EventArgs e) 
{ 
    ListBoxAdder myAdder = new ListBoxAdder(listBox1); // pass ListBox instance here 
    myAdder.Testing(); 
} 
関連する問題