76 lines
2.2 KiB
C#
76 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace TaikoSoundEditor
|
|
{
|
|
[DefaultEvent("PathChanged")]
|
|
public partial class PathSelector : UserControl
|
|
{
|
|
public PathSelector()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
protected override void SetBoundsCore(
|
|
int x, int y, int width, int height, BoundsSpecified specified)
|
|
{
|
|
// EDIT: ADD AN EXTRA HEIGHT VALIDATION TO AVOID INITIALIZATION PROBLEMS
|
|
// BITWISE 'AND' OPERATION: IF ZERO THEN HEIGHT IS NOT INVOLVED IN THIS OPERATION
|
|
if ((specified & BoundsSpecified.Height) == 0 || height == DisplayBox.Height)
|
|
{
|
|
base.SetBoundsCore(x, y, width, DisplayBox.Height, specified);
|
|
Button.Width = 2 * DisplayBox.Height;
|
|
}
|
|
else
|
|
{
|
|
return; // RETURN WITHOUT DOING ANY RESIZING
|
|
}
|
|
}
|
|
|
|
public bool SelectsFolder { get; set; } = false;
|
|
|
|
public string Path
|
|
{
|
|
get => DisplayBox.Text;
|
|
set
|
|
{
|
|
DisplayBox.Text = value;
|
|
PathChanged?.Invoke(this, new EventArgs());
|
|
}
|
|
}
|
|
|
|
public delegate void OnPathChanged(object sender, EventArgs args);
|
|
public event OnPathChanged PathChanged;
|
|
|
|
public string Filter { get; set; } = "All files(*.*)|*.*";
|
|
|
|
private void Button_Click(object sender, EventArgs e)
|
|
{
|
|
if (SelectsFolder)
|
|
{
|
|
var dialog = new FolderPicker();
|
|
dialog.InputPath = DisplayBox.Text;
|
|
if (dialog.ShowDialog() == true)
|
|
{
|
|
Path = dialog.ResultPath;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var dialog = new OpenFileDialog();
|
|
dialog.Filter = Filter;
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
Path = dialog.FileName;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|