適合我的第一個 C# 表單應用程式。我可以用 POSH 撰寫它,但我正在努力畢業并理解 C#。我知道我還有很長的路要走,但如果有人可以幫助解釋這一點,我將不勝感激。
我有一個簡單的 SQL 表,其中包含以下內容: CLIENT、INPATH、OUTPATH、LIMITERS (PK) LIMITERS 具有唯一值對于每個 CLIENT,INPATH 和 OUTPATH 都是相同的。我正在嘗試創建一個執行以下操作的表單:
顯示具有不同 CLIENT -Working 的串列框
---其余的不起作用---
在串列框上單擊:
用 INPATH 為選定的 CLIENT 填充 TextBox
用 OUTPATH 為選定的 CLIENT 填充 TextBox
用 LIMITERS 為選定的 CLIENT 填充 ListBox
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Data.SqlClient;
namespace DSI_SFTP_FrontEnd
{
public partial class ClientMain : Form
{
private SqlDbConnect con;
public ClientMain()
{
InitializeComponent();
con = new SqlDbConnect();
con.SqlQuery("Select Distinct CLIENT from Client_Inf");
clientListBoxValues.Items.Clear();
foreach (DataRow dr in con.QueryEx().Rows)
{
clientListBoxValues.Items.Add(dr[0].ToString());
}
}
private void clientListBoxValues_SelectedIndexChanged(object sender, EventArgs e)
{
string text = clientListBoxValues.GetItemText(clientListBoxValues.SelectedItem);
if (text != null)
{
InitializeComponent();
string sql = $"Select INPATH, OUTPATH, LIMITERS from Client_Inf where CLIENT = '{text}'";
con = new SqlDbConnect();
con.SqlQuery(sql);
DataTable dataTable = con.QueryEx();
{
inPathTextBoxValue.Text = dataTable.Rows[0]["INPATH"].ToString();
outPathTextBoxValue.Text = dataTable.Rows[0]["OUTPATH"].ToString();
}
foreach (DataRow dr in dataTable.Rows)
{
limitersListBoxValues.Items.Add(dr[2].ToString());
}
}
}
private void createNewbutton_Click(object sender, EventArgs e)
{
NewClientForm frm = new NewClientForm();
frm.ShowDialog();
}
private void cancelButton_Click(object sender, EventArgs e)
{
this.Close();
}
}
}
SqlDbConnect.cs
using System.Data;
namespace DSI_SFTP_FrontEnd
{
public class SqlDbConnect
{
private SqlConnection _con;
public SqlCommand _cmd;
private SqlDataAdapter _da;
private DataTable _dt;
public SqlDbConnect()
{
_con=new SqlConnection("Server=<SERVER>;Database=<DB>;Trusted_Connection=True;TrustServerCertificate=True;");
_con.Open();
}
public void SqlQuery(string queryText)
{
_cmd= new SqlCommand(queryText, _con);
}
public DataTable QueryEx()
{
_da = new SqlDataAdapter(_cmd);
_dt= new DataTable();
_da.Fill(_dt);
return _dt;
}
public void NonQueryEx()
{
_cmd.ExecuteNonQuery();
}
}
}
uj5u.com熱心網友回復:
問題是您正在呼叫InitializeComponent(). 創建控制元件,即文本框和串列框等。效果是,每次串列框的選定索引更改時,您都在創建另一組這些控制元件。clientListBoxValues_SelectedIndexChangedInitializeComponent()
InitializeComponent()必須在建構式中呼叫一次,不能在ClientMain()其他任何地方呼叫!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441768.html
下一篇:發布后Django背景關系不加載
