![](/img/trans.png)
[英]How to return a value when the Close button [X] is clicked using the MessageBox? (C#)
[英]Show MessageBox that contain sql data when button clicked in c#
我正在制作一個程序,將我的數據顯示為圖像和標簽。 這是未單擊時我的程序的示例:
未點擊時:
單擊時
問題是,當我單擊其中一張圖像時。 如何將該圖像的ID(在我的SQL中為“ id_movie”)顯示到MessageBox ViewModel類中。
public class VModel
{
public VModel()
{
Clicked = new ClickedCommand(this);
DataTable dt = new DataTable();
using (MySqlConnection connection = new MySqlConnection("SERVER=localhost;" + "DATABASE=library;" + "UID=root;" + "PASSWORD=;"))
{
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = new MySqlCommand("Select * from movie_list", connection);
adapter.Fill(dt);
}
Library = dt.DefaultView;
}
public ICommand Clicked { get; set; }
public DataView Library { get; private set; }
}
點擊類
internal class ClickedCommand : ICommand
{
private VModel vModel;
public ClickedCommand(VModel vModel)
{
this.vModel = vModel;
}
public event EventHandler CanExecuteChanged { add { } remove { } }
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
MessageBox.Show("the id that got clicked");
}
}
如果只需要數據庫的數據,則可以在初始化ClickedCommand
時將dt
作為參數。
public class VModel
{
public ICommand Clicked { get; set; }
public DataView Library { get; private set; }
public VModel()
{
DataTable dt = new DataTable();
using (MySqlConnection connection = new MySqlConnection("SERVER=localhost;" + "DATABASE=library;" + "UID=root;" + "PASSWORD=;"))
{
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = new MySqlCommand("Select * from movie_list", connection);
adapter.Fill(dt);
}
var Library = dt.DefaultView;
// this = viewModel or Library as parameter
var Clicked = new ClickedCommand(this);
}
}
然后在Execute
方法中,訪問vModel
或Library
字段,具體取決於您作為參數給出的內容並顯示數據。
internal class ClickedCommand : ICommand
{
private VModel _vModel;
// private DataView _library;
public ClickedCommand(VModel vModel)
{
_vModel = vModel;
// _library = library;
}
public void Execute(object parameter)
{
int rowIndex;
int.TryParse(((string[])parameter)[0], out rowIndex);
var stringToSearch = ((string[]) parameter)[1];
// however you access it here.
MessageBox.Show(_vModel.Library[rowIndex][stringToSearch]);
// MessageBox.Show(_library[rowIndex][stringToSearch]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.