#c# #winforms #button #methods
#c# #winforms #кнопка #методы
Вопрос:
Только начал изучать Visual Studio, и я пытаюсь создать звуковую панель в Windows Forms. ButtonMaker(); это функция, которую я использую для создания кнопки для каждого звукового файла в моем каталоге, поэтому мне не нужно создавать 70 разных кнопок для каждого звука, но когда я запускаю программу, в окне формы ничего не отображается. Кто-нибудь знает почему? Я пробовал вызывать функцию в Main() и в начальном классе Form1, но ни в том, ни в другом ничего не происходит. Файл класса Forms здесь:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace MySoundBoard
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
///Tried running it here
}
private void Form1_Load(object sender, EventArgs e)
{
///Tried running it here
}
private void ButtonMaker()
{
string[] files = Soundfiles.GetFile();
foreach (var item in files)
{
string btnName = item.ToUpper();
Button btNname = new Button();
btNname.Text = item;
int x = 40;
int y = 40;
btNname.Location = new Point(x, y);
x = x 50;
if (x>900)
{
x = 40;
y = y 30;
}
}
}
private void button1_Click(object sender, EventArgs e)
{
}
}
}
Вот класс SoundFiles:
using System.IO;
using System;
using System.Text;
using System.Diagnostics;
using WMPLib;
namespace MySoundBoard
{
class Soundfiles {
WMPLib.WindowsMediaPlayer Player;
static public string[] GetFile() {
string txtPath = @"C:Documentspathtosound effects";
string[] files =
Directory.GetFiles(txtPath, "*ProfileHandler.cs", SearchOption.TopDirectoryOnly);
return files;
}
public void PlayFile(String url)
{
Player = new WMPLib.WindowsMediaPlayer();
Player.URL = url;
Player.controls.play();
}
}
}
И основной файл проекта (с которым еще не работал):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MySoundBoard
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
///Tried running it here
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
Как уже было сказано, я новичок в этом языке, и любая помощь будет оценена!
Комментарии:
1. Вы создаете кнопки, но не добавляете их в элемент, подобный панели .
2. Вам не хватает инструкции: this. Элементы управления. Добавить (btnName);
3.
int x = 40; int y = 40;
в противном случае они должны быть вне цикла… Вероятно, вам следует найти другие средства, кроме кнопок, для представления ваших файлов. Возможно, ListView.
Ответ №1:
Вы создаете кнопки, но никогда не добавляете их в форму. Просто добавьте
this.Controls.Add(btNname);
Следующее, что ваши кнопки ничего не будут делать. Вам также нужно будет добавить обработчик событий.
btNname.Click = ...;
Чтобы узнать, какая кнопка воспроизводит тот или иной звук, вам нужно найти способ вызвать эту ассоциацию. Хакерский подход заключается в
btNname.Tag = item;
а затем оцените Tag
позже
Комментарии:
1. Это очень помогло! Спасибо!