1
をForm1
で呼び出すと、なぜListViewにリストビューアイテムが表示されないのですか?Winforms ListViewItemsが表示されない
namespace WindowsFormsApplication10
{
public partial class Form1 : Form, IView
{
Presenter presenter;
public Form1()
{
InitializeComponent();
presenter = new Presenter(this, new Model());
}
public void SwitchToControl(UserControl userControl)
{
this.tableLayoutPanel1.Controls.Clear();
this.tableLayoutPanel1.Controls.Add(userControl);
}
public void SetListView(ListView listView)
{
this.listView1 = listView;
}
private void button1_Click(object sender, EventArgs e)
{
presenter.SwitchToFirst();
}
private void button2_Click(object sender, EventArgs e)
{
presenter.SwitchToSecond();
}
private void button3_Click(object sender, EventArgs e)
{
presenter.SetListView();
}
}
interface IView
{
void SwitchToControl(UserControl userControl);
void SetListView(ListView listView);
}
class Presenter
{
private readonly IView view;
private readonly IModel model;
public Presenter(IView view, IModel model)
{
this.view = view;
this.model = model;
}
public void SwitchToFirst()
{
var control = new UserControl1();
view.SwitchToControl(control);
}
public void SwitchToSecond()
{
var control = new UserControl2();
view.SwitchToControl(control);
}
public void SetListView()
{
ListView listView = new ListView();
listView.Items.Add(new ListViewItem { Text = "First" });
listView.Items.Add(new ListViewItem { Text = "Second" });
listView.Items.Add(new ListViewItem { Text = "Third" });
listView.Items.Add(new ListViewItem { Text = "Fourth" });
view.SetListView(listView);
}
}
interface IModel
{
}
class Model : IModel
{
}
}
Form1のコントロールにlistViewを追加する必要があります。 –
@x ...、this.listView1 = listView;私はそれがうまくいくと思った。 – A191919
いいえ、それはうまく動作しません。 'listView1'はあなたのフォームには表示されず、フォームに表示されているものとはまったく異なる新しいメモリ内の' ListView'を指し示すだけです。フォームに表示されているものは 'InitializeComponent'で作成され、フォームの' Controls'コレクションに追加されます。 –