C# 用户控件无法添加到winform?
我正在处理winform应用程序。作为同一项目的一部分,我的应用程序中有一个用户控件。我在该用户控件的构造函数中编写了以下代码C# 用户控件无法添加到winform?,c#,winforms,user-controls,C#,Winforms,User Controls,我正在处理winform应用程序。作为同一项目的一部分,我的应用程序中有一个用户控件。我在该用户控件的构造函数中编写了以下代码 public ctrlCurrentLocation() { InitializeComponent(); string NewLine = System.Environment.NewLine; string strHeader = string.Concat("<?xml ver
public ctrlCurrentLocation()
{
InitializeComponent();
string NewLine = System.Environment.NewLine;
string strHeader = string.Concat("<?xml version=\"1.0\"?>", NewLine, "<TrackMap>", NewLine);
string strLast = strHeader + string.Concat("</TrackMap>", NewLine);
strXMLPath = AppDomain.CurrentDomain.BaseDirectory + "JavaScript\\TrackMap.xml";
FileStream fs1 = File.Open(strXMLPath, FileMode.Create);
StreamWriter writer1 = new StreamWriter(fs1, Encoding.UTF8);
writer1.Write(strLast);
writer1.Close();
fs1.Dispose();
.......
.
.
}
AppDomain.CurrentDomain.BaseDirectory
在设计模式下返回C:\Program Files…\IDE
。这不是您的TrackMap.xml
文件所在的位置
您可以向UserControl添加属性,例如ctrlCurrentLocation.MapFilePath
,该属性可以在设计器中设置。然后用文件的数据刷新userControl
例子:
private string\u mapFilePath=null;
公共ctrlCurrentLocation()
{
初始化组件();
}
私有void重载映射()
{
如果(_mapFilePath!=null&&File.Exists(_mapFilePath))
{
字符串换行符=System.Environment.NewLine;
string strHeader=string.Concat(“,换行符,”,换行符);
string strLast=strHeader+string.Concat(“,换行符);
strXMLPath=AppDomain.CurrentDomain.BaseDirectory+“JavaScript\\TrackMap.xml”;
FileStream fs1=File.Open(strXMLPath,FileMode.Create);
StreamWriter writer1=新的StreamWriter(fs1,Encoding.UTF8);
writer1.写入(strLast);
writer1.Close();
fs1.Dispose();
.......
.
.
}
}
公共字符串映射文件路径
{
获取{return\u mapFilePath;}
设置
{
_mapFilePath=value;
重载映射();
}
}
使用映射路径的代码已从构造函数移动到其自己的方法。然后,只要MapFilePath属性发生更改,就会调用此方法
此属性将出现在设计器的“属性”面板中,因为它是UserControl类的公共属性。您可以在那里粘贴文件路径,并将执行
ReloadMap
的代码。如果将代码放置在UserControl的构造函数中,则Visual Studio也将在设计时执行该代码。这是你的本意吗?如果不是-检查IsDesignMode属性,仅当IsDesignMode==false时,才在InitializeComponent()之后执行代码
FileStream fs1 = File.Open(strXMLPath, FileMode.Create);
private string _mapFilePath = null;
public ctrlCurrentLocation()
{
InitializeComponent();
}
private void ReloadMap()
{
if(_mapFilePath != null && File.Exists(_mapFilePath))
{
string NewLine = System.Environment.NewLine;
string strHeader = string.Concat("<?xml version=\"1.0\"?>", NewLine, "<TrackMap>", NewLine);
string strLast = strHeader + string.Concat("</TrackMap>", NewLine);
strXMLPath = AppDomain.CurrentDomain.BaseDirectory + "JavaScript\\TrackMap.xml";
FileStream fs1 = File.Open(strXMLPath, FileMode.Create);
StreamWriter writer1 = new StreamWriter(fs1, Encoding.UTF8);
writer1.Write(strLast);
writer1.Close();
fs1.Dispose();
.......
.
.
}
}
public string MapFilePath
{
get { return _mapFilePath; }
set
{
_mapFilePath = value;
ReloadMap();
}
}