c# - mensaje - Arrastrando archivos al cuadro de texto enriquecido para leer texto en el archivo
texto enriquecido word (2)
necesita verificar el objeto dragado antes de leer el archivo. prueba el siguiente código
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
richTextBox1.DragDrop += new DragEventHandler(richTextBox1_DragDrop);
richTextBox1.AllowDrop = true;
}
void richTextBox1_DragDrop(object sender, DragEventArgs e)
{
object filename = e.Data.GetData("FileDrop");
if (filename != null)
{
var list = filename as string[];
if (list != null && !string.IsNullOrWhiteSpace(list[0]))
{
richTextBox1.Clear();
richTextBox1.LoadFile(list[0], RichTextBoxStreamType.PlainText);
}
}
}
Tengo un problema con arrastrar y soltar archivos en richTextBox, cada vez que arrastro un archivo de texto sobre él, se convierte en una imagen del archivo de texto con su nombre debajo. Haga doble clic en el archivo y se abre utilizando la aplicación predeterminada del sistema (es decir, el bloc de notas para archivos de texto, etc.). básicamente está haciendo atajos en richTextBox, cuando quiero que lea el texto en el archivo.
Basado en este código, el texto del archivo debe extraerse en richTextBox1
class DragDropRichTextBox : RichTextBox
{
public DragDropRichTextBox()
{
this.AllowDrop = true;
this.DragDrop += new DragEventHandler(DragDropRichTextBox_DragDrop);
}
private void DragDropRichTextBox_DragDrop(object sender, DragEventArgs e)
{
string[] fileNames = e.Data.GetData(DataFormats.FileDrop) as string[];
if (fileNames != null)
{
foreach (string name in fileNames)
{
try
{
this.AppendText(File.ReadAllText(name) + "/n");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
¿Alguna idea de cómo hacer que esto funcione?
utilice esto para vincular el evento DragEnter y DragDrop para RichTextBox en Designer.cs
this.richTextBox1.AllowDrop = true; this.richTextBox1.DragDrop += new System.Windows.Forms.DragEventHandler(this.textBox1_DragDrop); this.richTextBox1.DragEnter += new System.Windows.Forms.DragEventHandler(this.textBox1_DragEnter);
private void textBox1_DragDrop(object sender, DragEventArgs e)
{
try
{
Array a = (Array)e.Data.GetData(DataFormats.FileDrop);
if (a != null)
{
string s = a.GetValue(0).ToString();
this.Activate();
OpenFile(s);
}
}
catch (Exception ex)
{
MessageBox.Show("Error in DragDrop function: " + ex.Message);
}
}
private void OpenFile(string sFile)
{
try
{
StreamReader StreamReader1 = new StreamReader(sFile);
richTextBox1.Text = StreamReader1.ReadToEnd();
StreamReader1.Close();
}
catch (Exception ex)
{
MessageBox.Show(this, ex.Message, "Error loading from file");
}
}
private void textBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}