为什么这在VB.Net中有效:
Dim ClipboardStream As New StreamReader(
CType(ClipboardData.GetData(DataFormats.CommaSeparatedValue), Stream))
Run Code Online (Sandbox Code Playgroud)
但这是在C#中抛出一个错误:
Stream是一个Type,在当前上下文中无效
ClipboardStream = new StreamReader(Convert.ChangeType(
ClipboardData.GetData(DataFormats.CommaSeparatedValue), Stream));
Run Code Online (Sandbox Code Playgroud)
说实话,我不是100%在转换类型上,我只是在代码片段中使用过它们,现在我正在尝试将简单的VB代码片段转换为C#版本...
好的,我知道我可以这样做:
Dim ws as worksheet
Set ws = thisworkbook.worksheets("Sheet1")
Run Code Online (Sandbox Code Playgroud)
然后用ws工作表对象做我喜欢的东西
我也知道我可以Dim wss as worksheets使用worksheets("Sheet1")返回工作表对象.那么为什么以下工作呢?
Dim wss as worksheets
Dim ws as worksheet
Set wss = thisworkbook.worksheets
Set ws = wss("Sheet1")
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
Dim wss as worksheets
Dim ws as worksheet
Set ws = thisworkbook.wss("Sheet1")
Run Code Online (Sandbox Code Playgroud)
但后者只是看起来我试图重命名/缩短"工作表",这似乎是完全错误的.我正在尝试将工作簿的工作表放到一个名为wss的工作表对象中.这更多的是试图理解heirachy而不是为了功能目的我试图让wss包含来自工作簿x的所有工作表所以我可以做ws = wss(1)而不是说set ws = wb.worksheets(1)
这是可能的还是我误解了工作表/工作表的关系?
我找不到这方面的解释,我试过谷歌搜索VS符号,图标,本地窗口,几个组合.我得到了很多关于各种非相关主题的结果 - 但没有一个可以解释我在寻找什么:
以下图标与我在运行C#程序的Visual Studio 2015社区本地窗口中的字符串字段(至少在我当前的运行中)有关.
顶部有一个小玫瑰花或其上的东西 - 这实际上是一个图像(不是我假设的玫瑰花结),它对我的弦是什么意思?!
这是一个截图,顶部字符串字段上的图标 -
我用来重新创建的类是:
namespace TEST_ENVIRONMENTS
{
class locals_window_icon_test
{
protected string A = "";
private string B;
}
class derived : locals_window_icon_test
{
public string C = "";
public string D;
public void method()
{
A = "Hey";
C = "Guy";
D = "Gop";
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是从一个实例运行的:
namespace TEST_ENVIRONMENTS
{
class _PROGRAM
{
static void Main(string[] args)
{
derived x = new derived();
x.method();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我只是在末尾放了一个调试停止标记,method然后查看Locals窗口中的变量.
我希望任何 div 元素在视口大小发生变化时调整大小,因此通常我可以使用例如 flex 或10emor %- 但实际上我希望它仅以 30 像素的增量调整大小,因此它始终与背景对齐。
这可能吗?
mod我能想到的唯一方法已经失效了——以前的操作员可能可以,但现在不行了?
我也可以通过媒体查询来实现这一点,但将其设置为仅 30 像素的增量将是一场噩梦。
下面的代码片段的最大宽度为 210 像素,最小宽度为 30 像素。当浏览器从宽调整为细时,它应该仅以 30 像素的增量跳跃。
.Mlt{
background-color:grey;
min-width:60px;
max-width:210px;
}Run Code Online (Sandbox Code Playgroud)
<div class="Mlt">
<p>Hello</p>
<p>Content</p>
</div>Run Code Online (Sandbox Code Playgroud)
简而言之,我有一个接受的观点:
@model IEnumerable<MyModel>
Run Code Online (Sandbox Code Playgroud)
并继续遍历模型,使用以下方法创建表:
@for (int i = 0; i < Model.Count(); i++)
{
<tr id="tblRow_@(Model.ElementAt(i).Id)">
<td width="1">
@Html.DisplayFor(m => m.ElementAt(i).LoggedInUser)
</td>
<td width="1" class="date">
@Html.DisplayFor(m => m.ElementAt(i).DateCreated)
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
所以在控制器中我传递x给视图,它是:
var x = new DAL().GetList(); // returns IEnumerable<MyModel>
Run Code Online (Sandbox Code Playgroud)
或者
var x = new DAL().GetList().ToList();
Run Code Online (Sandbox Code Playgroud)
通过第一个(IEnumerable)比通过第二个(已经转换为列表)慢
为什么?
我假设它与 Model.Count() 有关系,也许它必须为每个周期将 the 转换IEnumerable为 a List,但即使只有 100 个条目,速度差异也会从几乎立即变为 8 秒。
我遇到了一个问题,我认为这可能是由于我的类的复杂性将对象传递给对方所以我最小化它并且问题仍然存在:
我有一个在VS2017社区中创建的默认winform项目
在表单上我添加了一个文本框,一个richtextbox,一个backgroundworker和一个用于激活后台工作者的按钮.
我在表单中放入以下代码来填充文本框并在按钮单击时运行worker:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
textBox1.Text = "Hello";
richTextBox1.Text = "World!";
}
private void button1_Click(object sender, EventArgs e)
{
if (backgroundWorker1.IsBusy != true)
{
backgroundWorker1.RunWorkerAsync();
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
MessageBox.Show(textBox1.Text);
MessageBox.Show(richTextBox1.Text);
}
}
Run Code Online (Sandbox Code Playgroud)
我运行程序,我不明白接下来会发生什么.
textBox1.Text可从表格访问,以便MessageBox显示正常.richTextBox1.Text无法访问并给我这个错误:
跨线程操作无效:控制'richTextBox1'从其创建的线程以外的线程访问.
为什么?
我假设richTextBox有更多的路由和包装,但.Text属性不完全相同?!这里发生了什么?
编辑:我不认为这是一个重复的标记问题,因为他没有工作,TextBox.Text而我的是.我问的是TextBox和RichTextBox .Text属性之间的区别.
我正在尝试返回Obj1类型列表,但首先需要使用IQueryable LINQ语句来拉出这些Obj2类型,该语句为我提供了类型列表,并提供了一种方法,可以将它们转换为通过使用foreach循环应用的所需类型
public List<Obj1> GetObj1List(int id)
{
List<Obj2> obj2List = Select(x => x.ObjTable.Where(a => a.Id == id)).ToList();
List<Obj1> obj1List = new List<Obj1>();
foreach(Obj2 o in obj2List)
{
obj1List.Add(MapObject2ToObject1(o, OtherMethod));
}
return obj1List;
}
Run Code Online (Sandbox Code Playgroud)
有什么方法可以包装我的Select语句以将MapObject2ToObject1方法应用到结果而无需foreach一行?
我必须从两个表中的每一个中删除一行,它们由一个 ID 链接但没有正确的 PK - FK 关系(这个数据库没有外键!)
这些表具有假定的 1-1 关系。我不知道为什么它们不只是放在同一张桌子上,但我不能随意更改它。
PersonId | Name | OwnsMonkey
----------------------------
1 Jim true
2 Jim false
3 Gaz true
Run Code Online (Sandbox Code Playgroud)
PersonId | FurtherInfo
-----------------------------
1 Hates his monkey
2 Wants a monkey
3 Loves his monkey
Run Code Online (Sandbox Code Playgroud)
要决定删除什么,我必须找到一个用户名以及他们是否拥有一只猴子:
Select PersonId from People where Name = 'Jim' and OwnsMonkey = 'false'
Run Code Online (Sandbox Code Playgroud)
所以我使用这个想法做两个单独的陈述,Info首先删除,然后从People
delete from Info where PersonId = (Select PersonId from People where Name = 'Jim' and OwnsMonkey = 'false');
delete from …Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法可以在存储过程中执行单个更新语句,在该方法中我们可以忽略符合特定条件的变量?
例如一般声明是:
UPDATE XYZ SET a = z, b = y, c = x
但如果 y 为 NULL 那么它会忽略语句的 b = y 段?
我不想为每个变量使用 IF,然后构建并连接一条语句或一一更新列...
我看过这里,它似乎在正确的轨道上,但我认为它是为了更新值(如果它为空),而不是如果变量本身为空?!
我正在使用MySQL,但不太好用。我不知道以上就是我所追求的,其他搜索被证明是徒劳的。
在 .NET 6 / 7 Web 项目中,默认构建器在第一行使用
var builder = WebApplicationBuilder.CreateBuilder();
Run Code Online (Sandbox Code Playgroud)
然后,该构建器包含“appsettings.json”和“appsettings.Development.json”等配置。
文档说:
...使用预配置的默认值初始化 WebApplication 类的新实例
但我不想要这些默认值。我想摆脱 appsettings 和 appsettings.development。
我曾经能够使用 builder.HostClear或其他东西在较低版本的 .NET 中执行此操作,但现在看来我只能添加到这些默认配置中?或者我是否必须使用旧的类库来完全控制配置等?
c# ×6
.net ×3
sql ×2
asp.net-mvc ×1
css ×1
excel ×1
excel-vba ×1
mysql ×1
richtextbox ×1
sql-server ×1
textbox ×1
vb.net ×1
vba ×1
winforms ×1