|
分類:[C#]
現在、複数の異なるusercontrol内でデータを入力して、一つのusercontrolにデータを集めて表示するものを作成しています。
usercontrol1:リストボックスが2つ、ボタンが1つあります。
ボタンは、リストボックス1の選択項目をリストボックス2に移動するというものです。
usercontrol2:usercontrol1を2つ貼り付けたもの。
usercontrol3:usercontrol2のリストボックス2を表示する。
usercontrol2でボタンを押したときに、usercontrol3のリストボックスにusercontrol2のリストボックス2を表示するにはどうしたらよいでしょうか。
・usercontrol3のリストボックスのプロパティをstaticにすると「オブジェクトの参照が必要です」と言われます。
これは、どう対処するべきですか?
意味不明で分かりにくいかもしれないですが、回答頂ければ嬉しいです。
//// Form1 ///////
public partial class Form1 : Form
{
UserControl2 control1 = new UserControl2();
UserControl3 control2 = new UserControl3();
UserControl[] temp = new UserControl[2];
public Form1()
{
InitializeComponent();
control_Initial();
}
public void control_Initial()
{
temp[0] = control1;
temp[1] = control2;
for (int i = 0; i < temp.Length; i++)
{
temp[i].Location = new Point(12, 20);
tabPage1.Controls.Add(temp[i]);
temp[i].Visible = false;
}
control1.GroupBoxName1 = "グループ1";
control1.GroupBoxName2 = "グループ2";
string[] path_mp3;
path_mp3 = System.IO.Directory.GetFiles(
@"C:\Users\xxxxxxxx\Desktop\xxxx", "*", System.IO.SearchOption.AllDirectories);
if (path_mp3 != null)
{
control1.listBox1_clear1 = path_mp3;
control1.listBox1_clear2 = path_mp3;
foreach (string filename in path_mp3)
{
control1.listBox1_items1 = Path.GetFileName(filename);
control1.listBox1_items2 = Path.GetFileName(filename);
}
}
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
ComboBox box = (ComboBox)sender;
for (int i = 0; i < temp.Length; i++)
{
temp[i].Visible = false;
if (i == box.SelectedIndex)
{
temp[i].Visible = true;
}
}
}
}
//// usercontrol1 ///////
private void button1_Click(object sender, EventArgs e)
{
// listBox1選択されているItemのインデックス取得
int Index = listBox1.SelectedIndex;
//リストボックスで選択されているものがある場合(無い場合Indexは「-1」)
if (Index >= 0)
{
listBox2.Items.Add(listBox1.SelectedItem);
if (GroupName == "グループ1")
{
// listbox1 = listBox1.SelectedItem; ←ここでusercontrol3のリストボックスに表示したいです。
}
else if (GroupName == "グループ2")
{
// listbox2 = listBox1.SelectedItem; ←ここでusercontrol3のリストボックスに表示したいです。
}
// listBox1から選択済みItemを削除
listBox1.Items.Remove(listBox1.SelectedItem);
if (listBox1.Items.Count == Index)
{
listBox1.SelectedIndex = Index - 1;
}
else
{
listBox1.SelectedIndex = Index;
}
}
}
////// UserControl2 //////////
public partial class UserControl2 : UserControl
{
public string GroupBoxName1
{
set { userControl11.GroupName = value; }
get { return userControl11.GroupName; }
}
public string GroupBoxName2
{
set { userControl12.GroupName = value; }
get { return userControl12.GroupName; }
}
public object listBox1_items1
{
set { userControl11.ListNameL.Items.Add(value); }
get { return userControl11.ListNameL.Items; }
}
public object listBox1_items2
{
set { userControl12.ListNameL.Items.Add(value); }
get { return userControl12.ListNameL.Items; }
}
public string[] listBox1_clear1
{
set { userControl11.ListNameL.Items.Clear(); }
}
public string[] listBox1_clear2
{
set { userControl12.ListNameL.Items.Clear(); }
}
public object listBox2_items1
{
set { userControl11.ListNameR.Items.Add(value); }
get { return userControl11.ListNameR.Items; }
}
public object listBox2_items2
{
set { userControl12.ListNameR.Items.Add(value); }
get { return userControl12.ListNameR.Items; }
}
}
//////// UserControl3 ////////
public partial class UserControl3 : UserControl
{
public object listbox1 ← staticにするとオブジェクト参照が必要と言われます。
{
set { listBox1.Items.Add(value); }
get { return listBox1; }
}
public object listbox2
{
set { listBox2.Items.Add(value); }
get { return listBox2; }
}
public UserControl3()
{
InitializeComponent();
groupBox1.Text = "グループ1";
groupBox2.Text = "グループ2";
}
}
|