■70355 / ) |
Re[5]: foreachを使わない |
□投稿者/ まさおっち (6回)-(2014/03/14(Fri) 19:30:17)
|
DLするのは大変だと思いますので、ソースを記述しておきます。
//form1
public void CreateNewTab()
{
if (_message == null) return; //インターフェイスは何か読めてるか?
foreach (var item1 in _message)
{
if (ブログ数 != 0) { break; } //タブを無限増殖させないため
// tabの追加
var title = item1.TabName;
var tabPage = new TabPage(title);
tabPage.BackColor = Color.White;
tabPage.Name = "tab1";
foreach (var item1 in _message)
{
ブログ数 = ブログ数 + 1;
アイコンの位置 = (ブログ数 - 1) * 13;
var PictureBox1 = new PictureBox();
PictureBox1.Location = new System.Drawing.Point(10 * アイコンの位置 + 10 + ブログ数, 10); //
PictureBox1.Size = new System.Drawing.Size(120, 120);
PictureBox1.ImageLocation = item1.picturebox1url();
PictureBox1.Click += (s, e) =>
{
removeDynamicControls("blogtextbox1");
removeDynamicControls("blogbutton");
item1.DLL関数(this.tabControl1, this.Controls);
};
tabPage.Controls.Add(PictureBox1);
}
tabControl1.TabPages.Add(tabPage); //タブ作成
}
}
//テキストボックスなどを名前指定で消す。
public void removeDynamicControls(string textbox)
{
Control[] controls = Controls.Find(textbox, true);
foreach (Control control in controls)
{
this.Controls.Remove(control);
control.Dispose();
}
}
------------------------------------------------------------------------------------------------------------------------------------------------
//DLL1
public void DLL関数(TabControl tabControl1, Control.ControlCollection Controls)
{
Form1 form1;//Formクラスのインスタンス化。
form1 = new Form1();
//テキストボックス1
var blogtextbox1 = new TextBox();
blogtextbox1.Location = new System.Drawing.Point(10, 30);//
blogtextbox1.Size = new System.Drawing.Size(180, 10);
blogtextbox1.Name = "blogtextbox1";
Controls.Add(blogtextbox1);
//ボタン
var blogbutton2 = new Button();
blogbutton2.Location = new System.Drawing.Point(10, 10);
blogbutton2.Name = "blogbutton";
blogbutton2.Size = new System.Drawing.Size(80, 20);
blogbutton2.Text = "DLL1";
blogbutton2.Click += (a, b) =>
{
blogtextbox1.Text = "DLL1";
};
Controls.Add(blogbutton2);
}
----------------------------------------------------------------------------------------------------------
//DLL2
public void DLL関数(TabControl tabControl1, Control.ControlCollection Controls)
{
Form1 form1;//Formクラスのインスタンス化。
form1 = new Form1();
//テキストボックス1
var blogtextbox1 = new TextBox();
blogtextbox1.Location = new System.Drawing.Point(10, 30);//
blogtextbox1.Size = new System.Drawing.Size(180, 10);
blogtextbox1.Name = "blogtextbox1";
Controls.Add(blogtextbox1);
//ボタン
var blogbutton2 = new Button();
blogbutton2.Location = new System.Drawing.Point(50, 10);
blogbutton2.Name = "blogbutton";
blogbutton2.Size = new System.Drawing.Size(80, 20);
blogbutton2.Text = "DLL2";
blogbutton2.Click += (c, d) =>
{
blogtextbox1.Text = "DLL2";
};
Controls.Add(blogbutton2);
}
このような形になっています。
結果2つのピクチャーボックスができ、押すとボタンが生成されるのですが、ピクチャーボックスは正しく2種のものが出るのに、ピクチャーボックスを押すと両方ともDLL2が出てしまいます。
なぜDLL1のDLL関数をつかうことができないのでしょうか?
|
|