我想检查C#Windows窗体应用程序中的Insert键的状态.这是最小的代码(不起作用;带有两个RadioButtons的表单):
using System;
using System.Windows.Forms;
using System.Windows.Input;
// Also added PresentationCore and WindowsBase refereneces
namespace InsertModeDemo1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
if (Keyboard.IsKeyToggled(Key.Insert))
radioButtonInsert.Checked = true;
else
radioButtonOverstrike.Checked = true;
}
}
}
Run Code Online (Sandbox Code Playgroud) 我在文本框中验证userinput有一个小问题.
有一个带有各种文本框的用户控件,用户可以在其中输入数据以将新记录添加到数据库.当这些文本框中的任何一个没有正确的值(null或特定)时,我希望取消插入并让'errormaking'文本框获得焦点.
必须通过按钮检查.我可以调用按钮的Validating事件,还是有不同的(更好的)方法来实现这个?
此外,还有一个取消按钮取消整个插入.当尝试使用errorprovider时,"取消"按钮也变得不可用,因为该字段为空,因此无法发送.
一些代码供参考:
private void CheckInput(CancelEventArgs e, TextBox tb)
{
ErrorProvider error = new ErrorProvider();
if (string.IsNullOrEmpty(tb.Text))
{
error.SetError(tb, "*");
e.Cancel = true;
}
if (!string.IsNullOrEmpty(tb.Text))
{
error.SetError(tb, string.Empty);
error.Clear();
error.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud) namespace övning_2._2_mitt_första_program
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult dialogResult = MessageBox.Show("Är det roligt att programera", "Övning", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if ( DialogResult == DialogResult.No)
{
MessageBox.Show("Du suger", "ÅSNA", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
else if (DialogResult == DialogResult.Yes)
{
MessageBox.Show("Klart du gör", "Duktig", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}
}
Run Code Online (Sandbox Code Playgroud) public int dialog()
{
Form prompt = new Form(); // creates form
//dimensions
prompt.Width = 300;
prompt.Height = 125;
prompt.Text = "Adding Rows"; // title
Label amountLabel = new Label() { Left = 50, Top = 0, Text = "Enter a number from 1-50" }; // label for prompt
amountLabel.Font = new Font("Microsoft Sans Serif", 9.75F);
TextBox value = new TextBox() { Left = 50, Top = 25, Width = prompt.Width / 2 }; // text box for prompt
Button …Run Code Online (Sandbox Code Playgroud) 回答这个问题:VS2010/C#:如何在IDE中设置ComboBox的默认值?
据该用户,在Delphi的IDE,一个是能够,在属性窗口中,设置默认索引的comboBox,当你打开它INITIALLY.但是,我无处可寻Default Index.当我最初的意思是,我的意思是不是以编程方式,同时当且仅当它最初打开时.
我已经尝试设置索引comboBox.SelectedIndex = 0,但事实证明我每次运行程序时都会设置它,所以这不仅在最初发生,而且每次我运行程序时都会发生.不是我想要的.
有谁知道我可以在属性或参数事件窗口中做什么,我怎么能这样做..?
当我最初打开我的程序时,它看起来像这样:

我的属性选项卡:

编辑:我可以创建一个全局整数计数器,它在每次运行时递增,并且当且仅当整数为0时才将默认值设置为0,这意味着它是第一次运行,但是如果它是我无需编程的话,那会更好.
我想将第2列中的所有值写入列表:
List<string> list = new List<string>();
foreach (var item in dataGridView1.Rows)
{
list.Add(item.Cells[1].Value.ToString);
}
Run Code Online (Sandbox Code Playgroud)
但是,这会返回错误.
这个问题的答案虽然是一个明显的解决方案,但对于这种情况来说还不够.我在原来的问题中加粗了这个原因,解释了为什么我希望它"完全回答" - 感谢LarsTech!
我有一个包含100个WinForms 表单屏幕的库,它是"Beyond My Control",我可以在我的应用程序中共享一些.但是,我的应用程序使用选项卡控件,我需要表单的内容显示在选项卡中而不是弹出窗口.
当我尝试新建其中一个表单并将其添加到选项卡的控件集合时,我收到以下错误消息:
顶级控件无法添加到控件中.
谁知道怎么解决这个问题?我知道还有其他方法涉及更好的架构,但截止日期,积压和富有的新客户等待着.[叹/]
private void button1_Click(object sender, EventArgs e)
{
//panel1.Controls.Add(new Button());
Form f = new Form();
f.Controls.Add(new CheckBox());
//f.ShowDialog();
panel1.Controls.Add(f);
}
Run Code Online (Sandbox Code Playgroud) 我有一个C#winforms应用程序,其中我使用OpenFileDialog让用户选择要打开的文本文件.(允许多个选择)一旦他们选择了文本文件,我逐个打开文件,获取文本并存储内容使用List.Add()操作的List变量.
当用户选择异常大量的文本文件(如1264个文本文件,总大小高达750MB)时,我的问题就出现了,程序无法处理它.它读取了大约850个文件然后给我一个内存不足的例外.在任务管理器中,当发生这种情况时,我的应用程序的内存(私有工作集)大约为1.5GB.我使用x64机器与32GB内存.
我给出了通读文件的代码:
public static List<LoadData> LoadDataFromFile(string[] filenames)
{
List<LoadData> MasterData = new List<LoadData>();
lookingForJobs = new LookingForJobs(1,filenames.Length);
lookingForJobs.Show();
/*-------OUTER LOOP TO GO THROUGH ALL THE FILES-------*/
for (int index = 0; index < filenames.Length; index++)
{
string path = filenames[index];
/*----------INNER LOOP TO GO THROUGH THE CONTENTS OF EACH FILE------*/
foreach (string line in File.ReadAllLines(path))
{
string[] columns = line.Split('\t');
if (columns.Length == 9)
{
if (line.StartsWith("<")) /*-------IGNORING THE FIRST 8 LINES OF EACH LOG FILE CONTAINING THE LOGGER …Run Code Online (Sandbox Code Playgroud) 在我的Windows应用程序中,我有PictureBox一个Button控件.我想从按钮的OnClick事件中加载用户的图像文件,并将该图像文件保存在我项目中的文件夹名称"proImg"中.然后我想在中显示该图像PictureBox.
我写了这段代码,但它不起作用:
OpenFileDialog opFile = new OpenFileDialog();
opFile.Title = "Select a Image";
opFile.Filter = "jpg files (*.jpg)|*.jpg|All files (*.*)|*.*";
if (opFile.ShowDialog() == DialogResult.OK)
{
try
{
string iName = opFile.FileName;
string filepath = "~/images/" + opFile.FileName;
File.Copy(iName,Path.Combine("~\\ProImages\\", Path.GetFileName(iName)));
picProduct.Image = new Bitmap(opFile.OpenFile());
}
catch (Exception exp)
{
MessageBox.Show("Unable to open file " + exp.Message);
}
}
else
{
opFile.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
它无法将图像保存在"proImg"文件夹中.

我试图根据msdn的这篇文章实现Web浏览器. http://code.msdn.microsoft.com/vstudio/Professional-WebBrowser-dac9c5d0#content 但是我在第4.2点添加NuGet功能时遇到了麻烦.我通过Manage NuGet Packages成功安装了DockPanel Suite.此应用程序是Visual Studio 2012中的WinForms.在此安装之后,我应该在工具箱中看到DockPanel组件,但我找不到它.我尝试了一切,但仍然没有.