为了避免混淆,我将我的代码翻译为英语使用者友好。 File
实际为Ficheiro
, NOT 存在。因此,我处理的是自己的类,而不是来自File
的{{1}}。
我从数据集中设置了System.IO
。如果我编辑并插入新值,bindingsource
和textbox
等控件就可以正常工作。但我有一个combobox
列(用于存储小的pdf文件),所以我需要一个绑定控件。
我的想法是创建一个名为File的类,并继承自Control类以使用varbinary
,因为databinding
控件也使用相同的方法将TextBox
设置为databinding
。
这里的问题是当我调用对话框函数时(见下文)我在File类上有一个bindingsource
,内容集。
System.StackOverflowException
这里的类文件:
private void button1_Click(object sender, EventArgs e)
{
f.dialog();
}
我将控件绑定到bindingsource的方式:
class File : Control
{
private byte[] _content
public byte[] Content{
get{
return _content;
}
set{
_content=value;
}
}
//public string name; //not used for now
public string ext;
public string type;
public string fileName;
public File(){
}
public byte[] getBytes()
{
return Content;
}
public void dialog(){
OpenFileDialog fdg = new OpenFileDialog();
fdg.Filter = "PDF Files | *.pdf";
if (fdg.ShowDialog() == DialogResult.OK)
{
if (fdg.fileName.Length > 0)
{
fileName = fdg.FileName;
ext = ".pdf";
type = "pdf";
using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
using (var reader = new BinaryReader(stream))
{
content = reader.ReadBytes((int)stream.Length);
stream.Close();
}
}
}
}
}
}
编辑: 现在我有另一个错误。
private void Upload_Load(object sender, EventArgs e)
{
f = new File();
f.DataBindings.Add(new System.Windows.Forms.Binding("Content", this.fBindingSource, "FileContent", false));
// TODO: This line of code loads data into the 'pEGPIDataSet_ficheiro_ds.Ficheiro' table. You can move, or remove it, as needed.
this.fTableAdapter.Fill(this.myautodatasetfromfile.Ficheiro);\
}
我添加了我的控件,它已设置内容。为什么我这个例外?
答案 0 :(得分:1)