首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重用OpenFileDialog

重用OpenFileDialog
EN

Stack Overflow用户
提问于 2010-01-14 05:54:41
回答 4查看 529关注 0票数 2

我有两个文本框和两个按钮...每个文本框的旁边。是否可以使用一个OpenFileDialog并根据所单击的按钮将FilePath传递给相应的textbox?当我在对话框中单击i.e...if时,它会将fileName传递给第一个文本框。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-14 06:02:49

这对我来说很有效(它比其他帖子更简单,但它们中的任何一个都可以)

代码语言:javascript
复制
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;
}
票数 2
EN

Stack Overflow用户

发布于 2010-01-14 06:09:02

每当你想到“有共同的功能!”您应该考虑一种实现它的方法。它可能看起来像这样:

代码语言:javascript
复制
    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);
    }
票数 4
EN

Stack Overflow用户

发布于 2010-01-14 06:01:08

有几种方法可以做到这一点。一种方法是使用一个Dictionary<Button, TextBox>来保存按钮及其相关文本框之间的链接,并在按钮的click事件中使用它(这两个按钮可以连接到相同的事件处理程序):

代码语言:javascript
复制
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;
        }
    }
}

当然,上面的代码应该用空检查、行为的很好的封装等等来装饰,但是你已经明白了。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2060552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档