我有一个带有文本框控件的Windows窗体应用程序,我只想接受整数值.在过去,我通过重载KeyPress事件并删除不符合规范的字符来完成这种验证.我看过MaskedTextBox控件,但是我想要一个更通用的解决方案,可以使用正则表达式,或者依赖于其他控件的值.
理想情况下,这将表现为按下非数字字符将不产生结果或立即向用户提供关于无效字符的反馈.
我正在为应用程序编写数据访问层.访问层广泛使用linq类来返回数据.目前,为了将数据反映回数据库,我添加了一个私有数据上下文成员和一个公共保存方法.代码看起来像这样:
private DataContext myDb;
public static MyClass GetMyClassById(int id)
{
DataContext db = new DataContext();
MyClass result = (from item in db.MyClasss
where item.id == id
select item).Single();
result.myDb = db;
return result;
}
public void Save()
{
db.SubmitChanges();
}
Run Code Online (Sandbox Code Playgroud)
这是一个粗略的过度简化,但它给出了一般的想法.有没有更好的方法来处理这种模式?每次我想访问数据库时,我是否应该实例化新的数据上下文?
我经常遇到处理DataRows
退回的问题SqlDataAdapters
.当我尝试使用如下代码填充对象时:
DataRow row = ds.Tables[0].Rows[0];
string value = (string)row;
Run Code Online (Sandbox Code Playgroud)
DBNull's
在这种情况下处理这种情况的最佳方法是什么.
已经有一段时间了,因为我不得不编写C++代码而且我感觉有点愚蠢.我编写的代码与下面的代码类似,但不完全相同:
class Parent
{
...
};
class Child : public Parent
{
...
};
class Factory
{
static Parent GetThing() { Child c; return c; }
};
int main()
{
Parent p = Factory::GetThing();
Child c1 = p; // Fails with "Cannot convert 'Parent' to 'Child'"
Child c2 = (Child)p; // Fails with "Could not find a match for 'TCardReadMessage::TCardReadMessage(TCageMessage)'"
}
Run Code Online (Sandbox Code Playgroud)
我知道这应该很简单,但我不确定我做错了什么.
我目前正在创建一个需要与旧的C++应用程序交互的新C#项目.我需要在C#应用程序中使用C++应用程序中存在的错误枚举.
我不想在C#中重新声明枚举,因为如果文件没有一起更新,这可能会导致同步问题.
所有这一切都说我的问题是:有没有办法让我采用如此声明的枚举:
typedef enum
{
eDEVICEINT_ERR_FATAL = 0x10001
...
} eDeviceIntErrCodes;
Run Code Online (Sandbox Code Playgroud)
并在C#程序中使用它,如下所示:
eDeviceIntErrCodes.eDEVICEINT_ERR_FATAL
Run Code Online (Sandbox Code Playgroud) 我想序列化一些LINQ生成的对象,并将它们作为二进制字段存储在表中(不管你怎么理解).我希望能够编写一些看起来像这样的代码:
SerialTestDataContext db = new SerialTestDataContext();
relation_table row = db.relation_tables.First();
MemoryStream memStream = new MemoryStream();
BinaryFormatter bin = new BinaryFormatter();
bin.Serialize(memStream, row);
Console.WriteLine("Serilized successfully");
TestTable tt = new testTable();
tt.data = new System.Data.Linq.Binary(memStream.ToArray());
db.testTables.InsertOnSubmit(tt);
db.SubmitChanges();
Console.WriteLine("Inserted successfully");
Run Code Online (Sandbox Code Playgroud)
目前,即使我将生成的类标记为[Serializable],也会失败,因为其中一个LINQ继承的类不是.甚至可以这样做吗?
我有一个非常简单的html页面:
<table>
<tr><th>header1</th><th>header2</th></tr>
<tr><td>item1</td><td>item2</td></tr>
<tr><td>item3</td><td>item4</td></tr>
</table>
Run Code Online (Sandbox Code Playgroud)
用一些简单的css:
tr {
border:1px solid blue;
}
Run Code Online (Sandbox Code Playgroud)
我希望这会在tr
s 周围设置边框,但它根本不会在它周围放置边框.如何在周围设置边框tr
?
(是的,我已经查看了与此问题相关的现有问题.)
我finish()
从我的Activity的Up按钮监听器调用.但是,虽然onDestroy()
确实被称为被调用,但首先onPause()
被调用然后,令人惊讶的onCreate()
是,这导致了真正的问题.为什么ScanningActivity
通过调用finish()
ScanningActivity方法启动新的操作?
我正在记录所有生命周期函数的调用,顺序是这样的:
inside onClick() Listener for up button.
Inside onPause()
Inside onCreate() // this is what's hosing everything
Inside onStart()
Inside onResume()
Inside onWindowFocusChanged()
Inside onStop()
Inside onDestroy()
Run Code Online (Sandbox Code Playgroud)
为什么我在调用后会收到这一系列事件finish()
?这是在侦听器ScanningActivity
中调用finish()
,通知的代码onclick
(在onCreate()
方法中分配):
@Override
public void onCreate(Bundle savedInstanceState)
{
. . .
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Log.i("ScanningActivity", "inside onClick() -- Listener for up button being executed."); …
Run Code Online (Sandbox Code Playgroud) android back-button oncreate activity-lifecycle activity-finish
我有一个在不在域上的机器上运行的Windows窗体应用程序,它需要能够将文件从本地文件系统移动到UNC路径.我有该路径的用户名和密码.我想知道有没有办法直接执行这个net.exe
命令?
理想情况下,我不必映射驱动器.
c# ×6
.net ×3
c++ ×2
linq ×2
linq-to-sql ×2
winforms ×2
android ×1
back-button ×1
css ×1
file-sharing ×1
html ×1
oncreate ×1
postgresql ×1
sql-server ×1
textbox ×1