如何访问name
循环中以及foreach
下方的变量try
?我需要在我的Main类中引用它。对不起,这是一个愚蠢的问题。
public class DragDropRichTextBox : RichTextBox
{
public DragDropRichTextBox()
{
//Enables drag and drop on this class.
this.AllowDrop = true;
this.DragDrop += DragDropRichTextBox_DragDrop;
}
public void DragDropRichTextBox_DragDrop(object sender, DragEventArgs e)
{
string[] _fileText;
_fileText = e.Data.GetData(DataFormats.FileDrop) as string[];
if (_fileText != null)
{
foreach (string name in _fileText)
{
try
{
this.AppendText(BinaryFile.ReadString(name));
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
这是我需要从我的主课程中调用它的地方(参见" HERE"下面):
private void button5_Click(object sender, EventArgs e)
{
{
PrintDialog pd = new PrintDialog();
pd.PrinterSettings = new PrinterSettings();
if (DialogResult.OK == pd.ShowDialog(this))
{
RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, HERE);
}
}
}
答案 0 :(得分:4)
简单明了,你绝对不能。
该变量的范围限定为foreach
循环。无法在循环外部访问它,因为在循环之外甚至不存在。
如果没有循环,它将限定为try
块,如果没有,则为方法。即使在这些情况下,变量也不存在于其范围之外。
即使它确实如此,它会有什么价值?它是一个迭代变量,因此它在循环的每次传递中都会发生变化。整件事情都没有用。
如果您需要访问它指向/保持的数据,那么您需要将其存储在类级别变量中,或者在这种情况下,将每个值放入{{1} }。
答案 1 :(得分:0)
在这里介绍一些奇怪的东西,但我会回答你的问题并留待它。只是抬头,你所指的(名称)会在你走过foreach循环时不断改变数值。
public class DragDropRichTextBox : RichTextBox
{
public static List<string> NameList; // Create instance variable
public DragDropRichTextBox()
{
//Enables drag and drop on this class.
this.AllowDrop = true;
this.DragDrop += DragDropRichTextBox_DragDrop;
}
public void DragDropRichTextBox_DragDrop(object sender, DragEventArgs e)
{
string[] _fileText;
_fileText = e.Data.GetData(DataFormats.FileDrop) as string[];
if (_fileText != null)
{
foreach (string name in _fileText)
{
try
{
this.AppendText(BinaryFile.ReadString(name);
NameList.Add(name); // Assign it inside loop
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
}
private void button5_Click(object sender, EventArgs e)
{
PrintDialog pd = new PrintDialog();
pd.PrinterSettings = new PrinterSettings();
if (DialogResult.OK == pd.ShowDialog(this))
{
RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, DragDropRichTextBox.Name);
}
}