【问题标题】:how to get path of the browsed file and to be written in its textbox in c#?如何获取浏览文件的路径并在c#中写入其文本框中?
【发布时间】:2013-03-20 21:51:45
【问题描述】:

我的代码是--

    protected void BrowseButtonClick(object sender, EventArgs e)
    { 
        Thread newThread = new Thread(new ThreadStart(ThreadMethod));
        newThread.SetApartmentState(ApartmentState.STA);
        newThread.Start();
    }


    void ThreadMethod()
    {
            OpenFileDialog dlg = new OpenFileDialog();
            dlg.ShowDialog();
            BrowseTextBox.Text = string.Format("{0}/{1}", Path.GetDirectoryName(dlg.FileName), dlg.FileName);
    }

请帮忙......

【问题讨论】:

  • 您可能会发现您需要Invoke 调用Text 属性。见:stackoverflow.com/questions/782274/…
  • 我无法将浏览文件的路径写入浏览文本框
  • 代码除了上面所说的没有prblm

标签: c#


【解决方案1】:

目前还不是很清楚你真正需要什么。我假设您在从另一个线程更新 UI 控件时遇到问题。

void ThreadMethod()
{
    OpenFileDialog dlg = new OpenFileDialog();
    dlg.ShowDialog();
    MethodInvoker invoker = delegate 
    {
        BrowseTextBox.Text = .... 
    };

    if(InvokeRequired)
    {
        Invoke(invoker);
    }
    else
    {
        invoker();
    }
}

更新

对于 WPF 应用程序,您应该更改上面的代码。示例如下:

Action invoker = delegate 
    {
        BrowseTextBox.Text = .... 
    };
Dispatcher.Invoke(invoker);

【讨论】:

  • 我的代码正在创建一个浏览按钮,我使用线程来处理 sta 异常,但我无法将浏览文件的路径写入浏览文本框
  • 您必须始终从 GUI 线程更新 UI 控件。我给了你一个例子,如何为 WinForm 应用程序做到这一点。如果您正在构建 WPF 应用程序,更新控件会略有不同。
【解决方案2】:

BrowseTextBox.Text = dlg.FileName

【讨论】:

  • 我认为这不是答案。与执行此操作相关的 OP 代码似乎很好。我怀疑这是线程问题
猜你喜欢
  • 2019-12-15
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 1970-01-01
  • 2014-06-07
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
相关资源
最近更新 更多