私はウィンドウアプリケーションPOSを開発中です。要件:ボタン'seach item'
をクリックして_mainform(form 1)
を開いたときには_Searchform(form2)
が開き、検索フォームにはlistview
という結果が表示され、フォーム3の選択項目ボタンには_searchform(form2)
が表示されます。 listview
から選択した商品は、_mainform(form1) listview
に追加しています。C# - イベントハンドラ - あるフォームから別のフォームへの値の受け渡し
私はこの機能をデリゲートとイベントで実装しようとしています。 form3
(検索結果フォーム)では、私はdelegateとeventを宣言し、form1(メインフォーム)でもそれを購読しています。しかし、私がform 1
にアプリケーションイベントを実行すると、ドットが消えてしまいます。このコードは以下
:
_mainform(form1):
namespace KasseDelegate
{
public delegate void ListViewUpdatedEventHandler(object sender, ListViewUpdatedEventArgs e);
public partial class Form1 : Form
{
private Form3 frm3;
public Form1()
{
InitializeComponent();
frm3 = new Form3();
frm3.ListViewUpdated += new ListViewUpdatedEventHandler(Frm3_ListViewUpdated1);
}
private void Frm3_ListViewUpdated1(object sender, ListViewUpdatedEventArgs e)
{
MessageBox.Show("hi");
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.Show();
}
}
}
_searchform(form2) :
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
using (SQLiteConnection con = new SQLiteConnection(Properties.Settings.Default.ConnectionString))
{
con.Open();
SQLiteCommand cmd = new SQLiteCommand("select * from varer where [email protected]", con);
cmd.Parameters.AddWithValue("@Varenummer", "101");
SQLiteDataReader dr = cmd.ExecuteReader();
Form3 frm3 = new Form3(dr);
frm3.Show();
}
}
}
形態3:
namespace KasseDelegate
{
public partial class Form3 : Form
{
public event ListViewUpdatedEventHandler ListViewUpdated;
SQLiteDataReader dr1;
public Form3()
{
InitializeComponent();
}
public Form3(SQLiteDataReader dr)
{
InitializeComponent();
dr1 = dr;
}
private void Form3_Load(object sender, System.EventArgs e)
{
if (dr1 != null)
{
while (dr1.Read() == true)
{
ListViewItem LVI = new ListViewItem();
LVI.SubItems.Add(dr1[0].ToString());
LVI.SubItems.Add(dr1[1].ToString());
LVI.SubItems.Add(dr1[2].ToString());
LVI.SubItems.Add(dr1[3].ToString());
LVI.SubItems.Add(dr1[4].ToString());
listView1.Items.Add(LVI);
}
}
}
private void button2_Click(object sender, System.EventArgs e)
{
string sVareNummer = listView1.SelectedItems[0].SubItems[1].Text;
string sBeskrivelse = listView1.SelectedItems[0].SubItems[2].Text;
string pris = listView1.SelectedItems[0].SubItems[4].Text;
string enpris = listView1.SelectedItems[0].SubItems[5].Text;
if (ListViewUpdated != null)
{
ListViewUpdated(this, new ListViewUpdatedEventArgs() { VareNummer1 = sVareNummer, Beskrivelse1 = sBeskrivelse, Pris1 = pris, Enpris1 = enpris });
}
}
}
public class ListViewUpdatedEventArgs : System.EventArgs
{
private string VareNummer;
private string Beskrivelse;
private string pris;
private string enpris;
public string VareNummer1
{
get
{
return VareNummer;
}
set
{
VareNummer = value;
}
}
public string Beskrivelse1
{
get
{
return Beskrivelse;
}
set
{
Beskrivelse = value;
}
}
public string Pris1
{
get
{
return pris;
}
set
{
pris = value;
}
}
public string Enpris1
{
get
{
return enpris;
}
set
{
enpris = value;
}
}
}
}
私はForm1にたForm3(displayitem)からリストビュー選択された項目の値を取得する方法(MainFormを)。
YOUR Shiftキーが貼り付けられています。おっとっと。あまりにも私のもの。 –
"frmVelgVarer"と "Varesøk"を理解するのは難しいです。どちらがform2で、どちらがform3ですか? –
には3つの形式があります。 form1には、アイテムを検索するボタンがあります。ユーザーがそのボタンをクリックするとform2が開き、ユーザーは名前、IDで項目を検索できます。ユーザーが名前またはIDを入力して検索ボタンをクリックすると、form3がlistviewに結果として表示されます。だから私は、ユーザーがそのリストビュー(form3)からアイテムを選択し、選択をクリックしたいときはフォーム3から1つのリストビュー – Seeker