在我的项目中,我有一个设置表单和一个主表单.我试图从设置表单中调用Main表单的MasterReset函数,但没有任何反应.
Master form的Masterreset功能如下所示.
public void MasterReset()
{
DialogResult dialogResult = MessageBox.Show("Are you sure you want to perform master reset? All settings will be set to default.", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.Yes)
{
string path = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
string phonebook_path = path + "\\Phonebook\\Contacts.xml";
XmlDocument xDoc = new XmlDocument();
xDoc.Load(phonebook_path);
XmlNode xNode = xDoc.SelectSingleNode("People");
xNode.InnerXml = "";
xDoc.Save(phonebook_path);
listView1.Clear();
people.Clear();
}
else if (dialogResult == DialogResult.No)
{
return;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在从"设置"表单中访问它
private void btn_MasterReset_Click(object sender, EventArgs e)
{
Main f1 …Run Code Online (Sandbox Code Playgroud) 我正在开发一个供个人使用的项目(简单的电话簿).
基本上,我有三种形式:Main(主要),Settings(用于配置设置的)和Login(登录表单,只有在用户选中启动时要求输入密码的选项时才会启动) .只是为了使事情清楚:当.EXE文件启动时,它应该加载Main表单,除非选中要求传递的选项(Properties.Settings.Default.AskForPass == true) - 当它应该运行Login表单时第一.
以下是登录表单的外观:

我不知道如何让事情以正确的方式运作.
我试图将Program.cs中的行从Main更改为Login:
namespace Phonebook
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Login());
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,如果用户输入正确的用户名和密码,然后单击确定按钮:
private void button1_Click(object sender, EventArgs e)
{
if (txtUsername.Text == Properties.Settings.Default.MyUsername && txtPassword.Text == Properties.Settings.Default.MyPassword)
{
Main f1 = new …Run Code Online (Sandbox Code Playgroud) 我正在使用C#中的一个简单应用程序(电话簿),在我的项目中,我有一个填充了联系人的列表视图.我一直在努力实现使用文本框自动(即时)搜索列表视图的可能性.我已经设法使它工作,但不是以理想的方式.如果我给你举个例子,你会意识到实际的问题.假设我有一个名为Bill Gates的联系人,当我尝试搜索它时 - 它被找到了,那部分就可以了.但是,问题是当我尝试搜索另一个联系人时.在这种情况下,我必须在键入其他名称之前清除文本框,但是可以只删除字母.当我开始删除整个名字时,在删除第一个字母后,它就像我刚刚输入的名字一样 - 它选择了项目(并且也集中了) - 实际上没有时间在它再次找到联系人之前删除整个名称.我必须删除第一个字母,然后切换回文本框,删除另一个字母等.是否有任何搜索自动解决方案 - 现在,但另一方面删除(清除文本框)而不选择联系人是可能的.
看看代码:
private void txt_Search_TextChanged(object sender, System.EventArgs e)
{
if (txt_Search.Text != "")
{
foreach (ListViewItem item in listView1.Items)
{
if (item.Text.ToLower().Contains(txt_Search.Text.ToLower()))
{
item.Selected = true;
}
else
{
listView1.Items.Remove(item);
}
}
if (listView1.SelectedItems.Count == 1)
{
listView1.Focus();
}
}
else
{
LoadContacts();
RefreshAll();
}
}
Run Code Online (Sandbox Code Playgroud) 我在计算两个十进制数时遇到问题.
基本上,我正在尝试使用克多次盎司.我有两个文本框,第一个应该包含盎司(例如3,5),而第二个应该显示相同的值但以克为单位.因此,盎司应乘以31.1034768,结果应显示在第二个文本框中.
我一直试图用许多不同的方式来计算这两个,但它们都没有真正起作用.这是我最后一次失败的尝试:
private void btn_Calculate_Click(object sender, EventArgs e)
{
decimal oz = Convert.ToDecimal(txt_WeightOz.Text);
decimal ozingrams = 31.1034768M;
decimal result = Decimal.Multiply(oz, ozingrams);
txt_WeightGrams.Text = Convert.ToDecimal(result);
}
Run Code Online (Sandbox Code Playgroud)
它说我不能隐式地将类型'decimal'转换为'string'.
我该如何处理这个问题?