J'ai 2 zones de texte et 2 [...] boutons à côté de chaque zone de texte. Est-il possible d'utiliser un OpenFileDialog et de passer le FilePath à la zone de texte respective, en fonction du bouton sur lequel on clique? c'est-à-dire ... si je clique sur un bouton et que j'ouvre la boîte de dialogue, lorsque je clique sur Ouvrir dans la boîte de dialogue, il passe le nomFichier à la première zone de texte.Réutilisation OpenFileDialog
Répondre
Cela a fonctionné pour moi (et il est plus simple que le d'autres postes, mais l'un d'eux travailleraient aussi bien)
private void button1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox1.Text = openFileDialog1.FileName;
}
private void button2_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
textBox2.Text = openFileDialog1.FileName;
}
Cela ne fonctionnera pas correctement si l'utilisateur clique sur "Annuler". –
C'est correct. @ La réponse de HansPassant est meilleure. Il vérifie DialogResult.OK – David
Il y a plusieurs façons de le faire. L'un est d'avoir un Dictionary<Button, TextBox>
qui maintient le lien entre un bouton et sa zone de texte connexe, et l'utiliser en cas de clic pour le bouton (les deux boutons peuvent être accrochés au même gestionnaire d'événements):
public partial class TheForm : Form
{
private Dictionary<Button, TextBox> _buttonToTextBox = new Dictionary<Button, TextBox>();
public Form1()
{
InitializeComponent();
_buttonToTextBox.Add(button1, textBox1);
_buttonToTextBox.Add(button2, textBox2);
}
private void Button_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == DialogResult.OK)
{
_buttonToTextBox[sender as Button].Text = ofd.FileName;
}
}
}
de Bien sûr, le code ci-dessus doit être décoré avec des vérifications nulles, une bonne encapsulation de comportement et ainsi de suite, mais vous avez l'idée.
Oui il est, fondamentalement, vous devez garder une référence au bouton qui a été cliqué, puis une mise en correspondance d'une zone de texte à chaque bouton:
public class MyClass
{
public Button ClickedButtonState { get; set; }
public Dictionary<Button, TextBox> ButtonMapping { get; set; }
public MyClass
{
// setup textbox/button mapping.
}
void button1_click(object sender, MouseEventArgs e)
{
ClickedButtonState = (Button)sender;
openDialog();
}
void openDialog()
{
TextBox current = buttonMapping[ClickedButtonState];
// Open dialog here with current button and textbox context.
}
}
Chaque fois que vous pensez « il y a des fonctionnalités communes! » vous devriez envisager une méthode pour l'implémenter. Cela pourrait ressembler à ceci:
private void openFile(TextBox box) {
if (openFileDialog1.ShowDialog(this) == DialogResult.OK) {
box.Text = openFileDialog1.FileName;
box.Focus();
}
else {
box.Text = "";
}
}
private void button1_Click(object sender, EventArgs e) {
openFile(textBox1);
}
- 1. Erreur OpenFileDialog?
- 2. OpenFileDialog d'appel de Powershell
- 3. OpenFileDialog et Environment.CurrentDirectory
- 4. créer un openFileDialog personnalisé
- 5. .NET. Comment pirater OpenFileDialog?
- 6. Silverlight OpenFileDialog DoEvents équivalent
- 7. En lecture seule OpenFileDialog
- 8. C# OpenFileDialog Verrouiller au répertoire
- 9. VB.NET OpenFileDialog Latence sur Win7
- 10. Delphi: OpenFileDialog plante avec l'URL
- 11. .net OpenFileDialog changer le CurrentDirectory
- 12. Silverlight MVVM Prism et OpenFileDialog
- 13. C# OpenFileDialog Non-Modal possible
- 14. Réutilisation de NSXMLParser
- 15. TestNG test réutilisation
- 16. Réutilisation d'un MFMailComposeViewController
- 17. Réutilisation d'un PreparedStatement
- 18. générateurs de réutilisation
- 19. Réutilisation de l'objet IBM.WMQ.MQQueue
- 20. Serveur Sql Code Réutilisation
- 21. Réutilisation de vues gonflées
- 22. Cross Frame Script Réutilisation
- 23. Réutilisation de UserControls coûteux
- 24. Réutilisation d'un fil
- 25. Cache transformer la réutilisation
- 26. Réutilisation de DataTemplate
- 27. Réutilisation de IndexSearcher
- 28. Réutilisation d'objets Lucene Query
- 29. Réutilisation de style WPF
- 30. http connexion réutilisation
Ceci est possible. Peut-être pourriez-vous expliquer la partie de ce problème sur laquelle vous avez besoin d'aide. Essaies-tu de savoir quel bouton a été pressé? –
pour ajouter ... Je respecte @Fredrik Mörk –
+1 aux autres réponses, puisque les deux étaient réalisables. – David