如何在执行 Form_Load 之前读取 Xml 文件?
How to read Xml file before execute Form_Load?
我有一个 C# 应用程序并使用 xml 文件将连接字符串设置为我的 sql 数据库。数据库用表适配器填充数据网格视图。我希望在填充 datagridview 之前设置连接字符串,因为我有 DataGridView 的 CellValueChanged 事件。
我现在代表 From_Load 的代码是:
xmldoc.Load("D:\XML\paths.xml");
XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
sqlconnect = node.InnerText;
cn = new SqlCeConnection("Data Source=" + sqlconnect);
// TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Raum". Sie können sie bei Bedarf verschieben oder entfernen.
this.raumTableAdapter1.Fill(this.database1DataSet.Raum);
// TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Firma". Sie können sie bei Bedarf verschieben oder entfernen.
this.firmaTableAdapter1.Fill(this.database1DataSet.Firma);
// TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Kunde". Sie können sie bei Bedarf verschieben oder entfernen.
this.kundeTableAdapter1.Fill(this.database1DataSet.Kunde);
// TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Ansprechperson". Sie können sie bei Bedarf verschieben oder entfernen.
this.ansprechpersonTableAdapter1.Fill(this.database1DataSet.Ansprechperson);
但在 CellValueChanged 时,我收到一个错误消息,提示未设置连接字符串。
我的XML文件是这样设置的:
<?xml version="1.0" encoding="UTF-8"?>
- <paths>
<sqlconnection>D:\BDTWelcome - Kopie 2.0 fixed\BDTWelcome\Database1.sdf</sqlconnection>
<ExcelVorlagen>D:\BröExcelVorlagen</ExcelVorlagen>
</paths>
如果你能告诉我我的错误在哪里,那就太棒了。
转到 winfows 表单项目的 Programm.cs 文件。它看起来像:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
相关部分是 Main() 的最后一行。这里创建了表单。在调用表单的构造函数之前,您需要加载 XML 文件。可能的代码如下所示:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
xmldoc.Load("D:\XML\paths.xml");
XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
sqlconnect = node.InnerText;
cn = new SqlCeConnection("Data Source=" + sqlconnect);
Application.Run(new Form1(XmlNode));
}
通过它的构造函数将加载的 XmlNode(或任何你想要的)传递给表单。因此,您必须在 Form1.designer.cs 文件中添加构造函数并处理传递的数据。
我有一个程序做的几乎相同。我这样建立连接:
/// <summary>
/// Datenbank wird geöffnet.
/// </summary>
/// <param name="sCon">Verbindungsstring.</param>
/// <returns>Erfolgreich?</returns>
public bool OpenDBConnect(string sCon)
{
bool bOK = false;
try
{
_conn = new SqlConnection(sCon);
_sConn = sCon;
_conn.Open();
bOK = true;
}
catch (Exception ex)
{
_Logger.Log(Properties.EnglishStringResource.ConnectionFailed + ex.Message);
bOK = false;
}
return bOK;
}
之后你必须告诉你数据集当然要使用这个连接,否则数据集中将没有数据,你会得到没有为你的数据集设置连接字符串的错误!它想要更改您的网格中的数据(因为您可能将其绑定到网格),但由于缺少连接而无法获取任何数据。
可以像这样设置设计器制作的数据集的连接字符串:
[ApplicationNamespace].Properties.Settings.Default["ConnectionString"] = newconstr;
对我有用的解决方案是简单地创建一个函数来读取 xlm 文件并在第一次使用连接字符串之前设置连接字符串。
public void readconnectionstring()
{
xmldoc.Load("D:\XML\paths.xml");
XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
sqlconnect = node.InnerText;
cn = new SqlCeConnection("Data Source=" + sqlconnect);
}
我有一个 C# 应用程序并使用 xml 文件将连接字符串设置为我的 sql 数据库。数据库用表适配器填充数据网格视图。我希望在填充 datagridview 之前设置连接字符串,因为我有 DataGridView 的 CellValueChanged 事件。
我现在代表 From_Load 的代码是:
xmldoc.Load("D:\XML\paths.xml");
XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
sqlconnect = node.InnerText;
cn = new SqlCeConnection("Data Source=" + sqlconnect);
// TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Raum". Sie können sie bei Bedarf verschieben oder entfernen.
this.raumTableAdapter1.Fill(this.database1DataSet.Raum);
// TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Firma". Sie können sie bei Bedarf verschieben oder entfernen.
this.firmaTableAdapter1.Fill(this.database1DataSet.Firma);
// TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Kunde". Sie können sie bei Bedarf verschieben oder entfernen.
this.kundeTableAdapter1.Fill(this.database1DataSet.Kunde);
// TODO: Diese Codezeile lädt Daten in die Tabelle "database1DataSet.Ansprechperson". Sie können sie bei Bedarf verschieben oder entfernen.
this.ansprechpersonTableAdapter1.Fill(this.database1DataSet.Ansprechperson);
但在 CellValueChanged 时,我收到一个错误消息,提示未设置连接字符串。
我的XML文件是这样设置的:
<?xml version="1.0" encoding="UTF-8"?>
- <paths>
<sqlconnection>D:\BDTWelcome - Kopie 2.0 fixed\BDTWelcome\Database1.sdf</sqlconnection>
<ExcelVorlagen>D:\BröExcelVorlagen</ExcelVorlagen>
</paths>
如果你能告诉我我的错误在哪里,那就太棒了。
转到 winfows 表单项目的 Programm.cs 文件。它看起来像:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
相关部分是 Main() 的最后一行。这里创建了表单。在调用表单的构造函数之前,您需要加载 XML 文件。可能的代码如下所示:
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
xmldoc.Load("D:\XML\paths.xml");
XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
sqlconnect = node.InnerText;
cn = new SqlCeConnection("Data Source=" + sqlconnect);
Application.Run(new Form1(XmlNode));
}
通过它的构造函数将加载的 XmlNode(或任何你想要的)传递给表单。因此,您必须在 Form1.designer.cs 文件中添加构造函数并处理传递的数据。
我有一个程序做的几乎相同。我这样建立连接:
/// <summary>
/// Datenbank wird geöffnet.
/// </summary>
/// <param name="sCon">Verbindungsstring.</param>
/// <returns>Erfolgreich?</returns>
public bool OpenDBConnect(string sCon)
{
bool bOK = false;
try
{
_conn = new SqlConnection(sCon);
_sConn = sCon;
_conn.Open();
bOK = true;
}
catch (Exception ex)
{
_Logger.Log(Properties.EnglishStringResource.ConnectionFailed + ex.Message);
bOK = false;
}
return bOK;
}
之后你必须告诉你数据集当然要使用这个连接,否则数据集中将没有数据,你会得到没有为你的数据集设置连接字符串的错误!它想要更改您的网格中的数据(因为您可能将其绑定到网格),但由于缺少连接而无法获取任何数据。
可以像这样设置设计器制作的数据集的连接字符串:
[ApplicationNamespace].Properties.Settings.Default["ConnectionString"] = newconstr;
对我有用的解决方案是简单地创建一个函数来读取 xlm 文件并在第一次使用连接字符串之前设置连接字符串。
public void readconnectionstring()
{
xmldoc.Load("D:\XML\paths.xml");
XmlNode node = xmldoc.DocumentElement.SelectSingleNode("/paths/sqlconnection");
sqlconnect = node.InnerText;
cn = new SqlCeConnection("Data Source=" + sqlconnect);
}