我有一个Customer有以下成员的班级.
class Customer
{
public string ID { get; set; }
public string Name { get; set; }
public string Age { get; set; }
}
class Test
{
private void load()
{
Customer objCust=new Customer();
objCust.ID="1";
objCust.Name="Hello";
objCust.Age="23";
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想将这个实体绑定到我的DataGridView,但它没有向我显示任何行.
我使用以下代码将此Class对象绑定到DataGridView.
datagridview1.DataSource = objCust;
Run Code Online (Sandbox Code Playgroud) 我用谷歌搜索了这个问题的答案,但我似乎无法找到任何好的实例.我创建了一个名为StarControl的自定义星级用户控件.控件基本上是五个相互水平相邻的图片框,我有以下代码:
public partial class StarControl : UserControl
{
private enum StarTypes
{
Hollow,
Filled
}
private readonly StarTypes[] _stars;
private int _rating;
public StarControl()
{
InitializeComponent();
Locked = false;
_stars = new StarTypes[5];
_stars[0] = StarTypes.Hollow;
_stars[1] = StarTypes.Hollow;
_stars[2] = StarTypes.Hollow;
_stars[3] = StarTypes.Hollow;
_stars[4] = StarTypes.Hollow;
Rating = 0;
SetStars();
}
public bool Locked
{
get;
set;
}
public int Rating
{
get { return _rating; }
set { _rating = value; SetRating(); }
}
private void SetRating() …Run Code Online (Sandbox Code Playgroud) 这是我的代码,它给出了错误,查询返回特定项的值.
同样在数据库端查询返回行,即使我已经设置条件,如果读者有行然后只将它分配给一个变量,但仍然会抛出一个错误,例如.
dqty = sqlreader("qty")
Run Code Online (Sandbox Code Playgroud)
码:
Private Function checkquantity(ByVal code As String, ByVal quan As Integer) As Boolean
sqlcommand.CommandText = "select sum(qty) as qty from pos_stock_balance where item_code='" & code & "'"
sqlcommand.Connection = AppsCon
sqlreader = sqlcommand.ExecuteReader
If sqlreader.HasRows Then
dqty = sqlreader("qty")
sqlreader.Close()
Else
sqlreader.Close()
End If
If quan > dqty Then
Return False
Else
Return True
End If
End Function
Run Code Online (Sandbox Code Playgroud) 我在遗留应用程序中遇到了一个奇怪的错误(不是我自己编写的),当我在日历上更改日期时,我收到了StackOverflow异常.
简化版本如下.这是包含两个控件的Windows窗体的代码隐藏,一个名为label2的Label 和一个名为MonthCalendar的日历,名为monthCalendar1.
我认为这里的想法是创造一个打字机效果.我在XP上,我在Windows 7上的同事能够运行这个:
private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
const string sTextDisplay = "Press Generate button to build *** Reports ... ";
for (var i = 0; i < 45; i++)
{
label2.Text = Mid(sTextDisplay, 1, i);
System.Threading.Thread.Sleep(50);
//Error on this line
//An unhandled exception of type 'System.StackOverflowException' occurred in System.Windows.Forms.dll
Application.DoEvents();
}
}
public static string Mid(string s, int a, int b)
{
var temp = s.Substring(a - 1, b);
return temp; …Run Code Online (Sandbox Code Playgroud) 你好,
当UAC被显示在Windows Vista中,7或8消息,直到用户从消息对话框选择背景变得不可访问.这可以用VB.NET程序完成,以使背景无法访问,直到用户从表单中选择?
我想要的是当UAC或类似消息如下图所示时背景会发生什么,

我之前找到了类似的问题答案,但并不完全符合我的目的......
在Visual Basic中(最后我在06/07使用它),有一个"Index"属性,您可以将其分配给具有相同名称的多个控件.我主要使用它来循环控制,即:
For i = 1 to 500
picSeat(i).Print "Hello"
Next i
Run Code Online (Sandbox Code Playgroud)
有没有办法在C#中做到这一点?我知道有一个.IndexOf(),但这对我正在做的事情有帮助吗?我希望有多个具有相同名称的控件,只是不同的索引.如果我不清楚,请问,不要downvote.
编辑:这是一个Windows窗体应用程序,我使用的Visual Studio 2012年我正在谈论的控制,而不是数组/列表; 这在VB中是可能的,我想知道它是否可能在C#中.所以我想在剧院里拥有30个席位.我希望每个座位都由一个名为"picSeat"的图片框代表.VB会让我命名几个完全相同的对象,并将值赋给控件属性"Index".这样,我可以使用上面的循环在每个图片框中打印"Hello",只有3行代码.
如何限制我的文本框只接受数字和字母?它甚至不应该允许空格或类似"!","?","/"之类的东西.只有az,AZ,0-9
试过这个,它根本不起作用
if (System.Text.RegularExpressions.Regex.IsMatch(@"^[a-zA-Z0-9\_]+", txtTag.Text))
{
txtTag.Text.Remove(txtTag.Text.Length - 1);
}
Run Code Online (Sandbox Code Playgroud)
甚至不确定是否txtTag.Text.Remove(txtTag.Text.Length - 1);应该存在,因为它会导致应用程序崩溃.
我尝试在WinForms应用程序中实现ModelViewPresenter(MVP)模式.我有一个带按钮的主窗体,当我点击这个按钮时,会显示一个新窗体.遵循MVP模式的最佳方法是什么?我想,我应该从我的演示者中打开第二个表单,以便视图对其他视图一无所知.但我不确定.我的应用程序只有三个对话框.什么是最好的方法?
码
private void LoadAndShowMasterTrackForm()
{
if (GvClaims.SelectedRowsCount < 1)
return;
// Create an empty list.
var rowsToUpdate = new List<TrackData>();
// Add the selected rows to the list.
for (int i = 0; i < GvClaims.SelectedRowsCount; i++)
{
if (GvClaims.GetSelectedRows()[i] >= 0)
{
var track = GvClaims.GetRow(GvClaims.GetSelectedRows()[i]) as TrackData;
if (track != null)
rowsToUpdate.Add(track);
}
}
using (var uow = new UnitOfWork())
{
try
{
GvClaims.BeginUpdate();
var frmSynonyms = new MasterTrackDialog { DataSourceMainGridView = rowsToUpdate, DataSource = rowsToUpdate, SessionUow …Run Code Online (Sandbox Code Playgroud) 我希望最终用户能够指定自定义日期时间格式以输出到日志文件.(它控制每行的日期时间戳的前缀.)
我使用String.Format与一些串联导致ReSharper警告有关不匹配的大括号.必须有一个更合适的方法来处理这个,但我无法找到它.
string _entry = "Some event.";
public string GetFormattedEntry(string stampFormat)
{
return String.Format("{0:" + stampFormat + "}: {1}", DateTime.Now, _entry);
}
Run Code Online (Sandbox Code Playgroud)
这个想法是可以使用用户指定的格式字符串调用它,例如"yyyy-MM-dd HH:mm:ss",这将导致:
2013-12-05 14:47:57有些事件.
问题是ReSharper不喜欢拆分大括号用法(我也不喜欢).感觉就像一个黑客.有没有更好的方法将字符串格式传递给方法并使用它来格式化返回值?
(请注意,在假定用户指定的字符串可用之前,将对其进行验证.)
编辑:
为简洁起见,我简化了代码示例.实际方法迭代对象集合并相应地格式化每个对象集合.它还执行涉及富文本格式化等的其他功能,这些功能在此处不相关.
我需要有人帮我解决这个小问题.这是一段代码片段:
void shuffle()
{
for (int i = 0; i < 4; i++) {
// here should be the computations of x and y
buttons[i].Click += (s, e) => { show_coordinates(x, y); };
// shuffling going on
}
}
void show_coordinates(int x, int y)
{
MessageBox.Show(x + " " + y);
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,每次运行循环时,我都会为每个按钮创建一个具有不同x和y的新事件处理程序.在我的表单中有另一个按钮,随机地按下按钮.
所以这就是问题所在:如果我按下随机按钮说10次,然后按任意洗牌按钮,事件处理程序就会叠加,我会得到10个显示x和y值的消息框.
那么每次按shuffle时,如何用新的事件处理程序覆盖前一个事件处理程序.
提前致谢.