如何在c#中向窗口添加多个按钮?这就是我需要做的...我从字典中获取多个用户值(在合理范围内,只有@ 5-6值).对于每个值,我需要创建一个按钮.现在,我如何命名按钮,而不是按钮中的文字?我如何为每个按钮定义"点击"方法(它们都会有所不同)?如果我不再需要它,如何擦除按钮?
我试图从按钮调用选定的列表框项,而不是listbox.selecteditemchangedwpf中的方法.所以,当我尝试
string yadda = listbox.SelectedItem.ToString();
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
调用线程无法访问此对象,因为另一个线程拥有它.
所以,我想要做的是以下内容:
Dispatcher.BeginInvoke(() =>
{
lbxSelectedItem = (lbxFileList.SelectedItem as TextBlock).Text;
});
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我得到另一个例外:
无法将lambda表达式转换为类型'System.Delegate',因为它不是委托类型
我有传入的数据,需要分成多个值...即.
2345 \n564532 \n345634 \n234 234543 \n1324 2435 \n
当我收到它时,长度是不一致的,当它存在时间距是不一致的,我想分析每个\n之前的最后3位数.如何断开字符串并将其转换为新字符串?就像我说的,这一轮,它可能有3个\n命令,下一次,它可能有10个,我如何创建3个新字符串,分析它们,然后在接下来的10个进入之前销毁它们?
string[] result = x.Split('\r');
result = x.Split(splitAtReturn, StringSplitOptions.None);
string stringToAnalyze = null;
foreach (string s in result)
{
if (s != "\r")
{
stringToAnalyze += s;
}
else
{
how do i analyze the characters here?
}
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Directory.GetFiles给我mp3文件,我想填写ListBox结果,但不是在它通过该方法时停止程序,我可以让它搜索并填补它ListBox,因为它获得了mp3文件?
所以我正在使用的是如下(并且它未能在时间添加它们,它在完成后立即添加它们)
private List<string> Getmp3sFromFolders(string folder)
{
List<string> fileArray = new List<string>();
try
{
DirectoryInfo dir = new DirectoryInfo(folder);
var files = dir.EnumerateFiles("*.mp3");
foreach (var file in files)
{
fileArray.Add(file.FullName);
Dispatcher.BeginInvoke(_AddMP3ToListbox, file.Name);
}
var directories = dir.EnumerateDirectories();
foreach (var subdir in directories)
{
fileArray.AddRange(Getmp3sFromFolders(subdir.FullName));
}
// lblFolderSearching.Content = folder.ToString();
}
catch
{
}
return fileArray;
}
Run Code Online (Sandbox Code Playgroud)
我添加了 _AddMP3ToListbox = AddMP3ToListbox
它确实将mp3添加到列表框中,但它一次性完成,而不是一旦找到它.我怎样才能解决这个问题?
我有一个程序从c#中的串口读取.我需要快速写入端口,从中读取,然后关闭它.我不能把它打开.我知道串口缓慢读写,我试图将ReadTimeout和WriteTimeout属性设置为高,并添加了一个thread.Sleep来尝试拖动设备的读写时间.这是一些代码:
我写入端口的方法:
private void CheckPorts(string testMessage)
{
foreach (string s in SerialPort.GetPortNames())
{
portNumber = Int32.Parse(s.Remove(0, 3));
testSerial = new SerialPort(s, baudRate, Parity.None, 8, StopBits.One);
if (testSerial.IsOpen)
{
testSerial.Close();
}
testSerial.ReadTimeout = 2000;
testSerial.WriteTimeout = 1000;
testSerial.Open();
if (testSerial.IsOpen)
{
string received;
testSerial.DiscardInBuffer();
try
{
//testSerial.DataReceived += new SerialDataReceivedEventHandler(testSerialPort_DataReceived);
testSerial.Write(testMessage);
System.Threading.Thread.Sleep(2000);
received = testSerial.ReadExisting(); //EITHER I USE THIS OR EVENT HANDLER, NOT BOTH
}
catch (TimeoutException e)
{
testSerial.Close();
continue;
}
if (received.Length > 0)
{
MessageReceived(received);
}
testSerial.Close();
} …Run Code Online (Sandbox Code Playgroud) iphone一次有10个列表框条目,它不会'加载所有10k条目并同时滚动它们.它添加一个条目,一次减去一个条目.那么你如何在wpf列表框中执行此操作?我如何制作,说20个列表框条目,并添加一个或两个,并减去相同的数量?数据绑定列表框是否会解决此性能问题?
我有一个单独的类,比方说class2,带有字典.我希望用字符号填充字典.
public class Class2
{
public Class2()
{
public Dictionary<string, string> someDictionary = new Dictionary<string, string>();
//I DON"T KNOW HOW TO CREATE AN EVENTHANDLER HERE FOR THE DICTIONARY
//how do i create the eventhandler if someDictionary changes?
}
}
Run Code Online (Sandbox Code Playgroud)
让我们说在class1中,我有一个listview,我想填充字典值,但更改它们,因为class2中的字典更改.
public class Class1
{
public Class1()
{
Class2 class2 = new Class2();
class2.SomeDictionaryChanged += new EventHandler(someDictionary_SomeDictionaryChanged);
}
void someData_SomeDataChanged(object sender, EventArgs e)
{
listView1.Add(class2.someDictionary);
}
}
Run Code Online (Sandbox Code Playgroud)
如何在class2中为字典创建一个eventhandler,如何检查class1中的字典是否发生了变化?
所有这些都是PSEUDOCODE,它不会编译,我不知道怎么做,这就是我问的问题.
我有一个窗口,我想绑定来自2个不同的DataModel的数据上下文.我遇到过这篇文章: WPF将多个控件绑定到不同的datacontexts,并且它在我的代码中不起作用.我不知道你是否必须设置一个类的"新"实例才能使它工作,但我不能让它显示我的数据.这是一个样本
<Grid>
<Button Command="{Binding FurnaceDataViewModel.StartButtonCommand}"/>
<Button Command="{Binding FurnaceDataViewModel.StopButtonCommand}"/>
<Button Command="{Binding FurnaceDataViewModel.ClearButtonCommand}"/>
<Label Content="{Binding FurnaceDataModel.TotalTimeIdle}" />
<Label Content="{Binding FurnaceDataModel.GallonsUsed}" />
<Label Content="{Binding FurnaceDataModel.TotalMoney}" />
<Label Content="{Binding FurnaceDataModel.TotalTimeRun}" />
</Grid>
Run Code Online (Sandbox Code Playgroud)
我有我的MainWindow类:
FurnaceDataContext dataContext = new FurnaceDataContext();
InitializeComponent();
DataContext = dataContext;
Run Code Online (Sandbox Code Playgroud)
这是我的DataContext类
class FurnaceDataContext
{
public FurnaceDataViewModel FurnaceDataViewModel { get; set; }
public FurnaceDataModel FurnaceDataModel { get; set; }
public SqlDataModel SqlDataModel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我无法正确显示我的文本或我的按钮命令.有任何想法吗?
如何TextBlock从wpf中将c#转换为c#中的字符串?我有一个包含文本块的列表框,以便更改前景色.但是当我得到listbox.selecteditem时,它显然会返回一个文本块,但我需要知道文本块是什么,转换成字符串.我怎么做?
c# ×8
wpf ×6
listbox ×2
button ×1
delegates ×1
dictionary ×1
file-io ×1
filesystems ×1
lambda ×1
mvvm ×1
newline ×1
serial-port ×1
string ×1
string-split ×1
textblock ×1