我有兩個文本框和每個文本框旁邊的2個按鈕。是否有可能使用一個OpenFileDialog並將FilePath傳遞到相應的文本框,基於哪個按鈕被點擊?即...如果我點擊按鈕並放置對話框,當我單擊對話框上的打開對象時,它會將文件名傳遞給第一個文本框。重複使用OpenFileDialog
2
A
回答
2
這個工作對我(和它比簡單其他帖子,但其中任何一個都可以)
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;
}
+1
如果用戶點擊「取消」,這將無法正常工作。 – 2012-11-06 12:40:16
+0
這是正確的。 @ HansPassant的回答比較好。它檢查DialogResult.OK – David 2012-11-06 13:30:42
3
有幾種方法可以做到這一點。一個是有一個Dictionary<Button, TextBox>
保存按鈕及其相關文本之間的聯繫,並使用在該按鈕的點擊事件(這兩個按鈕可以掛接到相同的事件處理程序):
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;
}
}
}
中當然,上面的代碼應該使用空檢查,很好的行爲封裝等等,但你明白了。
2
是的,基本上你需要保持對按鈕的引用被點擊,然後在文本框的每個按鈕的映射:
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.
}
}
4
每當你想「有共同的功能!你應該考慮一種方法來實現它。它可能看起來像這樣:
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. c#/重命名DLL使用OpenFileDialog
- 2. 沒有使用openfiledialog
- 3. 使用OpenFileDialog和StreamReader
- 4. 使用GetOpenFileName而不是OpenFileDialog
- 5. OpenFileDialog:使用複選框選擇多個文件
- 6. 使用重複
- 7. 複製從OpenFileDialog選定的文件c#
- 8. Wxpython剪切複製粘貼和openfiledialog
- 9. OpenFileDialog Image
- 10. OpenFileDialog FileNames
- 11. OpenFileDialog Silverlight
- 12. OpenFileDialog Spy
- 13. Openfiledialog safefilenames
- 14. Openfiledialog Multiselect
- 15. 使用多重ng重複
- 16. 在C#中使用OpenFileDialog保存文件
- 17. 使用OpenFileDialog和Multiselect搜索字符串
- 18. 使用VBA訪問已打開的OpenFileDialog
- 19. 在OpenFileDialog中使用DialogResult.OK時出錯
- 20. 如何使用openFileDialog指定rootfolder
- 21. 如何在silverlight中使用openfiledialog
- 22. 使用openfiledialog移動多個文件
- 23. 如何使用OpenFileDialog選擇文件夾?
- 24. 如何使控制像OpenFileDialog?
- 25. 如何使OpenFileDialog變量Global?
- 26. 重複使用跨
- 27. 重複使用HttpURLConnection
- 28. 重複使用者
- 29. 重複使用FtpWebRequest
- 30. 重複使用MFMailComposeViewController
這是可能的。也許你可以解釋一下你需要幫助的問題。你想知道哪個按鈕被按下? – 2010-01-13 22:01:31
添加...我尊重@FredrikMörk – 2010-01-13 22:15:19
+1以及其他答案,因爲兩者都可行。 – David 2010-01-13 22:37:26