假设我的表单中有一个String属性(表单不实现INotifyPropertyChanged).我还创建了一个BindingSource并将其DataSource设置为表单.然后我将一个文本框绑定到我的表单上的String属性(间接地,使用BindingSource).
问题1:当我在运行时更改文本框中的值时,为什么不在String属性的setter中命中断点?我认为将控件绑定到String属性将允许自动发生此方向的更新(GUI - >成员数据)
问题2:当GUI之外的其他内容更改String属性时,如何在另一个方向(成员数据 - > GUI)上触发更新?我不想实现INotifyPropertyChanged接口并将NotifyPropertyChanged添加到setter.我认为通过使用BindingSource的ResetBindings,我至少可以手动触发它
public partial class Form1 : Form
{
private String m_blah;
public String Blah
{
get
{
return m_blah;
}
set
{
m_blah = value;
}
}
public Form1()
{
InitializeComponent();
textBox1.DataBindings.Add(new Binding("Text", bindingSource1, "Blah",true,DataSourceUpdateMode.OnValidation));
}
private void button1_Click(object sender, EventArgs e)
{
Blah = "Clicked!";
this.bindingSource1.ResetBindings(false); //expecting the GUI to update and say "Clicked!"
}
}
Run Code Online (Sandbox Code Playgroud) 我想创建一个查询,从人员列表(人员)返回特定的人(通过ID).
public Person getThisID(int pID)
{
var res = from p in persons
where p.pID == pID
select p;
return res;
}
Run Code Online (Sandbox Code Playgroud)
但是我遇到了关于投射问题的错误.我试图投射res到人物,但它不适用于此.我该如何解决?
我的控制器中有以下代码:
public List<DockDoorViewModel> GetDoorViewModel()
{
List<DockDoorViewModel> doors = new List<DockDoorViewModel>();
for (int i = 1; i < 11; i++)
{
// This is where the Stack Trace is pointing to.
DockDoorViewModel door = db.vwDockDoorDatas
.Where(x => x.DockNo == i)
.Select(x => x.ToDockDoorViewModel())
.FirstOrDefault();
if (door == null)
{
door = new DockDoorViewModel(i);
}
else
{
door.Items = db.vwDockDoorDatas
.Where(x => x.DockNo == i)
.Select(x => x.ToDockDoorItem())
.ToList();
}
doors.Add(door);
}
return doors;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试运行Web应用程序时,我收到此异常:
异常详细信息:System.NotSupportedException:LINQ to Entities无法识别方法'DockDoorMonitor.Models.DockDoorViewModel ToDockDoorViewModel(DockDoorMonitor.Models.vwDockDoorData)'方法,并且此方法无法转换为商店表达式.
这是扩展方法:
public …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用VbScript获取窗口的标题.有没有办法实现它?就像我们在C#中这样做的方式
using System.Diagnostics;
Process[] processlist = Process.GetProcesses();
foreach (Process process in processlist)
{
if (!String.IsNullOrEmpty(process.MainWindowTitle))
{
Console.WriteLine("Process: {0} ID: {1} Window title: {2}",
process.ProcessName, process.Id, process.MainWindowTitle);
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个文本框,它是只读的.当我点击我希望它来调用我的按钮点击事件:
private void tbFile_Click(object sender, EventArgs e)
{
//btnBrowse_Click(sender, e);
MessageBox.Show("test");
}
Run Code Online (Sandbox Code Playgroud)
单击文本框时,没有任何反应.我如何解决它?
更新:
private void btnBrowse_Click(object sender, EventArgs e)
{
openFile();
}
private void tbFile_Click(object sender, EventArgs e)
{
//btnBrowse_Click(sender, e);
if (tbFile.Text != "")
{
openFile();
}
}
public void openFile()
{
var FD = new System.Windows.Forms.OpenFileDialog();
FD.Filter = "DBF Files|*.DBF";
FD.InitialDirectory = @"C:\";
if (FD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string fileToOpen = FD.FileName;
tbFile.Text = fileToOpen;
}
}
Run Code Online (Sandbox Code Playgroud)
当我点击浏览按钮并选择一个文件时,浏览文件窗口再次出现.所以现在它出现了两次,文本框点击仍然不起作用.
这是我的任务方法:
public static async Task<IList<ResourceModel>> GetResourcesByName()
Run Code Online (Sandbox Code Playgroud)
这是在另一个类中,我想使用任务方法返回的值:
Task<IList<ResourceModel>> imagelist = RMS.SharedMobile.Adapter.ResourceAdapter.GetResourcesByName();
Run Code Online (Sandbox Code Playgroud)
我想做一个foreach循环迭代它返回的列表,但如果它是一个,那是不可能的Task.那么如何将其转换为有用的IList东西呢?
我创建了连接字符串:
connection.ConnectionString = @"Provider=abcdef; Server=123....; Database=abc; User Id=user; Password=xyz";
Run Code Online (Sandbox Code Playgroud)
它工作得很好.我想用变量交换密码:
connection.ConnectionString = @"Provider=abcdef; Server=123....; Database=abc; User Id=user; Password="+textBox1.Text;
Run Code Online (Sandbox Code Playgroud)
我的程序显示错误:
用户登录失败:user ...(textBox.Text ="xyz")
你知道如何正确地用变量交换密码吗?
我想从网址中提取域名.例如,www.Edmunds.com/Toyota_Camry_Hybrid或者http://jido.com我想拥有www.Edmunds.com和jido.com
我写了以下正则表达式:
Regex.Replace(Url, @"^([a-zA-Z]+:\/\/)?([^\/]+)\/.*?$", "$2");
Run Code Online (Sandbox Code Playgroud)
它适用于第一个链接,但对于第二个链接,我得到: http:
有人可以帮我这个吗?
我有C#窗体打开一个子窗体,在其中我有文本框,确定和取消按钮,
当用户单击"确定"时,我会检查与文本框中输入的机器用户的连接.
如果连接正常,我想关闭子表单,如果没有显示是\没有消息询问用户是否仍想使用输入的计算机名称.
如果答案为是,则关闭子表单,如果不是只关闭是\否问题.
在主窗体我正在检查子对话框DialogResult但似乎无法使它工作,因为this.Close传递取消结果.以下是主窗体中的代码:
DialogResult result = SetServer.ShowDialog();
if (result == DialogResult.OK)
{
// BLA
}
Run Code Online (Sandbox Code Playgroud)
儿童表格代码
if (!PingMachine(testmachine))
{
DialogResult dialogResult = MessageBox.Show(“No connection", "Check",
MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
btnOK.DialogResult = DialogResult.OK;
}
else
{
btnOK.DialogResult = DialogResult.No;
}
this.Close();
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种更有效的方法从字符串列表中删除空字符串值.
下面的代码可以工作,但对于非常大的数据集,这似乎效率低下.有没有更有效的方法来做到这一点?
仅供参考 - 开始只是构建一个数据集,以包含一个包含空字符串的列表
public static void Main()
{
//Building the data set
List<List<string>> list = new List<List<string>>();
list.Add(new List<string> {"One", "Two", "", "Eight"});
list.Add(new List<string> {"Three", "Five", "Six"});
list.Add(new List<string> {"Sixteen", "", ""});
list.Add(new List<string> {"Twenty-Eight", "Forty", "Nine"});
//Create an empty List of a List
List<List<string>> newList = new List<List<string>>();
//Loop through the original list and purge each list of empty strings
for(int i = 0; i < list.Count; i++) {
newList.Add(list[i].Where(x => !string.IsNullOrEmpty(x)).ToList());
}
foreach (var s …Run Code Online (Sandbox Code Playgroud)